:root{--primary-color: #005A9C;--secondary-color: #003366;--background-color: #f0f2f5;--text-color: #333;--text-color-light: #666;--white: #ffffff;--gray-light: #e0e0e0;--gray-medium: #9e9e9e;--error-color: #d32f2f;--success-color: #2e7d32;--warning-color: #ed6c02;--sidebar-bg: #003366;--sidebar-text: #ffffff;--sidebar-active-bg: #005A9C;--safe-area-bottom: env(safe-area-inset-bottom, 20px)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background-color:var(--background-color);color:var(--text-color);overscroll-behavior:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.login-container{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100vh;padding:20px;background:linear-gradient(135deg,var(--primary-color),var(--secondary-color))}.login-form{background:var(--white);padding:40px;border-radius:12px;box-shadow:0 8px 30px #00000026;width:100%;max-width:400px;text-align:center}.login-logo{width:80px;height:80px;border-radius:12px;margin:0 auto 15px;object-fit:contain;display:block}.login-form h1{margin-bottom:8px;color:var(--secondary-color);font-weight:700;font-size:28px}.login-form p{margin-bottom:30px;color:var(--text-color-light)}.input-group{margin-bottom:20px;text-align:left}.input-group label{display:block;margin-bottom:8px;font-weight:500;color:var(--text-color)}.input-group input{width:100%;padding:12px 15px;border:1px solid var(--gray-light);border-radius:8px;font-size:16px;transition:border-color .2s,box-shadow .2s}.input-group input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #005a9c33}.login-options{text-align:right;margin-top:-12px;margin-bottom:20px}.forgot-password-link{color:var(--primary-color);text-decoration:none;font-size:14px;font-weight:500}.forgot-password-link:hover{text-decoration:underline}.login-button{width:100%;padding:15px;border:none;background-color:var(--primary-color);color:var(--white);font-size:16px;font-weight:700;border-radius:8px;cursor:pointer;transition:background-color .2s,transform .1s}.login-button:hover:not(:disabled){background-color:var(--secondary-color)}.login-button:active:not(:disabled){transform:scale(.98)}.login-button:disabled{background-color:#90b8d3;cursor:not-allowed}.error-message{color:var(--error-color);margin-top:20px;font-weight:500}.app-container{display:flex;height:100vh;width:100vw;overflow-x:hidden;position:relative;background-color:var(--background-color)}.sidebar{width:250px;flex-shrink:0;background-color:var(--sidebar-bg);color:var(--sidebar-text);display:flex;flex-direction:column;padding:0;z-index:20;transition:transform .3s ease-in-out}.main-area{flex:1;display:flex;flex-direction:column;overflow:hidden;width:calc(100% - 250px)}.app-header{display:flex;justify-content:space-between;align-items:center;padding:0 24px;height:60px;background-color:var(--white);border-bottom:1px solid var(--gray-light);flex-shrink:0;z-index:10}.app-header .logo{font-size:20px;font-weight:700;color:var(--primary-color)}.user-menu{display:flex;align-items:center;gap:12px}.user-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover}.logout-button-icon{background:none;border:none;cursor:pointer;color:var(--text-color-light);padding:5px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s,color .2s}.logout-button-icon:hover{background-color:#f0f2f5;color:var(--primary-color)}.logout-button-icon svg{width:20px;height:20px}.sidebar-header{padding:20px;text-align:center;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-logo{width:50px;height:50px;margin:0 auto 10px;background-color:var(--white);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--primary-color)}.sidebar-logo svg{width:28px;height:28px}.sidebar-logo-img{width:100%;height:100%;object-fit:cover;border-radius:50%}.sidebar-school-name{font-size:16px;font-weight:500;color:var(--white);margin:0}.sidebar-profile{padding:20px;text-align:center;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:15px}.user-avatar-large{width:80px;height:80px;border-radius:50%;object-fit:cover;margin-bottom:12px;border:3px solid var(--white)}.sidebar-profile h3{font-size:16px;font-weight:500;word-break:break-word}.sidebar ul{list-style:none;padding:0;margin:0;flex-grow:1}.sidebar li a{display:flex;align-items:center;gap:15px;padding:12px 20px;color:var(--sidebar-text);text-decoration:none;font-weight:500;transition:background-color .2s,color .2s;border-left:3px solid transparent}.sidebar li a:hover{background-color:#ffffff0d}.sidebar li.active a{background-color:var(--sidebar-active-bg);border-left-color:var(--white)}.sidebar li a svg{width:22px;height:22px;opacity:.9}.sidebar .bottom-nav{border-top:1px solid rgba(255,255,255,.1);padding:10px 0}.main-content{flex:1;overflow-y:auto;padding:24px}.screen-header{margin-bottom:24px}.screen-header h1{font-size:28px;font-weight:700;color:var(--secondary-color);margin-bottom:4px}.screen-header p{font-size:16px;color:var(--text-color-light)}.card{background:var(--white);padding:20px;border-radius:12px;box-shadow:0 4px 12px #00000014;margin-bottom:20px}.card h3{font-size:18px;font-weight:500;margin-bottom:15px;color:var(--secondary-color)}.card p{color:var(--text-color-light);line-height:1.5}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px}.grid-item-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:20px;background-color:var(--white);border:1px solid var(--gray-light);border-radius:10px;text-decoration:none;color:var(--secondary-color);font-weight:500;transition:background-color .2s,transform .2s,box-shadow .2s;cursor:pointer;font-family:inherit;font-size:inherit;text-align:center}.grid-item-link:hover{background-color:#f8f9fa;transform:translateY(-3px);box-shadow:0 6px 15px #00000014}.grid-item-link svg{width:32px;height:32px;color:var(--primary-color)}.profile-card{text-align:center;max-width:500px;margin:0 auto}.profile-avatar{width:100px;height:100px;border-radius:50%;margin:0 auto 20px;display:block;object-fit:cover;border:3px solid var(--white);box-shadow:0 4px 10px #0000001a}.profile-card h2{font-size:22px;margin-bottom:8px}.profile-card p{font-size:16px;color:var(--text-color-light);margin-bottom:24px}.profile-actions{display:flex;flex-direction:column;gap:15px;margin-top:20px}.profile-details-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:12px 24px;border:1px solid var(--primary-color);background-color:transparent;color:var(--primary-color);font-size:16px;font-weight:700;border-radius:8px;cursor:pointer;transition:background-color .2s,color .2s}.profile-details-button:hover{background-color:var(--primary-color);color:var(--white)}.logout-button-alt{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:12px 24px;border:none;background-color:#fbecec;color:var(--error-color);font-size:16px;font-weight:700;border-radius:8px;cursor:pointer;transition:background-color .2s}.logout-button-alt:hover{background-color:#f8d7da}.filter-controls{display:flex;flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:24px;padding:15px;background-color:var(--white);border-radius:12px}.filter-group{display:flex;align-items:center;gap:10px}.filter-group label{font-weight:500;color:var(--text-color-light)}.year-selector{padding:8px 35px 8px 12px;border:1px solid var(--gray-light);border-radius:8px;cursor:pointer;font-weight:500;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 12px center;background-size:1em}.bimestre-buttons{display:flex;gap:10px;background-color:#f0f2f5;border-radius:8px;padding:4px}.bimestre-button{padding:8px 16px;border:none;background-color:transparent;color:var(--text-color-light);border-radius:6px;cursor:pointer;font-weight:500;transition:all .2s ease;white-space:nowrap;display:inline-flex;align-items:center;gap:8px}.bimestre-button:hover{background-color:#e0e0e0}.bimestre-button.active{background-color:var(--primary-color);color:var(--white);box-shadow:0 2px 5px #005a9c33}.bimestre-button svg{width:18px;height:18px}.boletim-table-container{overflow-x:auto;background-color:var(--white);border-radius:12px;box-shadow:0 4px 12px #00000014}.boletim-table{width:100%;border-collapse:collapse;font-size:14px;white-space:nowrap}.boletim-table th,.boletim-table td{padding:14px 16px;text-align:center;border-bottom:1px solid var(--gray-light)}.boletim-table thead th{background-color:#f8f9fa;font-weight:700;color:var(--secondary-color);font-size:12px;text-transform:uppercase}.boletim-table td:first-child,.boletim-table th:first-child{text-align:left;font-weight:500;position:sticky;left:0;background-color:var(--white);z-index:1}.boletim-table th:first-child{background-color:#f8f9fa;z-index:2}.boletim-table tbody tr:hover,.boletim-table tbody tr:hover td:first-child{background-color:#eef7ff}.boletim-table tbody td{color:var(--text-color)}.boletim-table tbody td:first-child{color:var(--secondary-color)}.table-container{overflow-x:auto}.faturas-table{width:100%;border-collapse:collapse;font-size:14px}.faturas-table th,.faturas-table td{padding:12px 15px;text-align:left;border-bottom:1px solid var(--gray-light)}.faturas-table th{background-color:#f8f9fa;font-weight:500}.status-badge{padding:4px 10px;border-radius:16px;font-size:12px;font-weight:700;color:var(--white)}.status-pago .status-badge{background-color:var(--success-color)}.status-pendente .status-badge{background-color:var(--warning-color)}.status-vencido .status-badge{background-color:var(--error-color)}.card-header-icon{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap}.card-header-icon h3{margin-bottom:0}.card-header-title-group{display:flex;flex-direction:column}.card-subtitle{font-size:13px;color:var(--text-color-light);font-weight:400;margin-top:2px}.notification-badge{display:flex;align-items:center;gap:6px;background-color:var(--primary-color);color:var(--white);padding:4px 10px;border-radius:16px;font-size:14px;font-weight:500}.notification-badge svg{width:16px;height:16px}.avisos-list{margin-top:20px;display:flex;flex-direction:column;gap:10px}.aviso-item{border:1px solid var(--gray-light);border-radius:8px;cursor:pointer;transition:background-color .2s;overflow:hidden}.aviso-item:hover{background-color:#f8f9fa}.aviso-header{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:15px}.aviso-title-wrapper{flex-grow:1}.aviso-date{font-size:12px;color:var(--text-color-light);margin-bottom:4px;display:block}.aviso-header h4{font-size:16px;font-weight:500;margin:0;color:var(--secondary-color)}.expand-icon{color:var(--gray-medium);transition:transform .3s ease}.expand-icon.expanded{transform:rotate(180deg)}.aviso-content{max-height:0;overflow:hidden;transition:max-height .3s ease-out,padding .3s ease-out;color:var(--text-color);line-height:1.6;padding:0 15px}.aviso-content.expanded{padding:0 15px 15px;max-height:500px;transition:max-height .5s ease-in,padding .5s ease-in}.aviso-content p{color:var(--text-color);line-height:1.5;margin:0}.frequencia-summary{display:flex;align-items:center;gap:15px}.progress-ring{flex-shrink:0}.progress-ring-circle-bg{stroke:var(--gray-light)}.progress-ring-circle{stroke:var(--primary-color);stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%;transition:stroke-dashoffset .5s}.progress-ring-text{font-size:18px;font-weight:700;fill:var(--primary-color)}.frequencia-details p{margin:0 0 4px;line-height:1.2}.frequencia-details strong{font-size:18px;color:var(--text-color)}.frequencia-details span{font-size:14px;color:var(--text-color-light)}.proximas-aulas-list{list-style:none;padding:0;margin-top:15px;display:flex;flex-direction:column;gap:12px}.proximas-aulas-list li{display:flex;align-items:center;justify-content:space-between;padding:10px;background-color:#f8f9fa;border-radius:8px;border-left:4px solid var(--primary-color)}.aula-tempo{font-weight:700;color:var(--secondary-color);font-size:14px}.aula-disciplina{font-weight:500;color:var(--text-color);font-size:15px}.horario-grid-container{background-color:var(--white);border-radius:12px;box-shadow:0 4px 12px #00000014;overflow:hidden}.horario-grid-header,.horario-grid-body{display:grid;grid-template-columns:60px repeat(6,1fr);text-align:center}.horario-grid-header{background-color:#f8f9fa;font-weight:700;color:var(--secondary-color);border-bottom:1px solid var(--gray-light)}.header-cell{padding:14px 10px}.tempo-column{display:flex;flex-direction:column;background-color:#f8f9fa;border-right:1px solid var(--gray-light)}.tempo-cell{padding:14px 10px;height:80px;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--primary-color);border-bottom:1px solid var(--gray-light)}.tempo-cell:last-child{border-bottom:none}.horario-day-column{display:flex;flex-direction:column;border-right:1px solid var(--gray-light);transition:background-color .2s}.horario-day-column:last-child{border-right:none}.horario-day-column.today{box-shadow:inset 0 0 0 2px var(--primary-color);z-index:2}.horario-card-wrapper{height:80px;padding:5px;border-bottom:1px solid var(--gray-light)}.horario-day-column .horario-card-wrapper:last-child{border-bottom:none}.horario-card{width:100%;height:100%;border-radius:8px;padding:8px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;transition:transform .2s,box-shadow .2s}.horario-card:not(.empty){background-color:var(--subject-color)}.horario-card:not(.empty):hover{transform:scale(1.05);z-index:5;box-shadow:0 4px 10px #00000026}.horario-card-disciplina{font-weight:500;font-size:14px;color:#333;line-height:1.3}.day-header-mobile,.horario-card-tempo-mobile{display:none}.debug-sql-container{margin-top:20px;padding:15px;background-color:#f8f9fa;border:1px solid var(--gray-light);border-radius:8px}.debug-sql-container h4{font-size:14px;font-weight:700;color:var(--secondary-color);margin:0 0 10px}.debug-sql-container code{font-family:Courier New,Courier,monospace;font-size:13px;color:var(--text-color);word-break:break-all;white-space:pre-wrap}.frequencia-summary-panel{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px}.summary-list-card{background-color:var(--white);padding:20px;border-radius:12px;box-shadow:0 4px 12px #0000000f}.summary-list-title{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:700;margin:0 0 15px;padding-bottom:10px;border-bottom:1px solid var(--gray-light)}.summary-list-card.with-faltas .summary-list-title{color:var(--error-color)}.summary-list-card.no-faltas .summary-list-title{color:var(--success-color)}.summary-list-title svg{width:20px;height:20px;flex-shrink:0}.summary-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.summary-list li{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid #f0f2f5;font-size:15px;color:var(--text-color)}.summary-list li:last-child{border-bottom:none}.faltas-count{font-weight:700;background-color:#fbecec;color:var(--error-color);padding:3px 8px;border-radius:12px;font-size:13px}.summary-list-empty{color:var(--text-color-light);font-size:14px;padding:10px 0;text-align:center}.frequencia-table-container{overflow-x:auto;background-color:var(--white);border-radius:12px;box-shadow:0 4px 12px #00000014}.frequencia-table{width:100%;border-collapse:collapse;font-size:14px;white-space:nowrap}.frequencia-table th,.frequencia-table td{padding:14px 16px;text-align:center;border:1px solid var(--gray-light)}.frequencia-table thead th{background-color:#f8f9fa;font-weight:700;color:var(--secondary-color);font-size:12px;text-transform:uppercase;position:sticky;top:0;z-index:2}.frequencia-table thead tr:nth-child(2) th{top:45px}.frequencia-table td:first-child,.frequencia-table th:first-child{text-align:left;font-weight:500;position:sticky;left:0;background-color:var(--white);z-index:1}.frequencia-table th:first-child{background-color:#f8f9fa;z-index:3}.frequencia-table tbody tr:hover,.frequencia-table tbody tr:hover td:first-child{background-color:#eef7ff}.frequencia-table tbody td{color:var(--text-color)}.frequencia-table tbody td:first-child{color:var(--secondary-color)}.frequencia-table td:last-child{font-weight:700}.planos-list{display:flex;flex-direction:column;gap:30px}.plano-day-group h2{font-size:20px;color:var(--secondary-color);margin-bottom:15px;padding-bottom:10px;border-bottom:2px solid var(--primary-color)}.planos-cards-container{display:flex;flex-direction:column;gap:15px}.plano-card{margin-bottom:0;border-left:4px solid var(--primary-color)}.plano-card h3{margin-bottom:8px}.plano-card h4{font-size:16px;font-weight:500;color:var(--text-color);margin-bottom:10px}.turma-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px}.colega-card{position:relative;text-align:center;padding:25px 15px;transition:transform .2s,box-shadow .2s}.colega-card:hover{transform:translateY(-5px);box-shadow:0 8px 20px #0000001a}.colega-card.aniversario-hoje{border:2px solid #ffd700;box-shadow:0 0 15px #ffd70080}.colega-card.aniversario-proximo{border-left:4px solid var(--warning-color)}.colega-card.aniversario-recente{border-left:4px solid var(--gray-medium)}.colega-card.aniversario-hoje:after,.colega-card.aniversario-proximo:after,.colega-card.aniversario-recente:after{content:"🎂";position:absolute;top:10px;right:10px;font-size:22px;text-shadow:0 2px 4px rgba(0,0,0,.2)}.colega-avatar{width:90px;height:90px;border-radius:50%;object-fit:cover;margin:0 auto 15px;border:3px solid var(--white);box-shadow:0 2px 8px #0000001a}.colega-name{font-size:16px;font-weight:500;color:var(--secondary-color);margin-bottom:5px}.colega-niver{font-size:14px;color:var(--text-color-light);margin:0}.niver-texto-extra{display:block;font-weight:500;color:var(--warning-color);margin-top:2px}.colega-card.aniversario-hoje .niver-texto-extra{color:#b8860b;font-weight:700}.colega-card.aniversario-recente .niver-texto-extra{color:var(--text-color-light)}.cadastro-container{max-width:800px;margin:0 auto}.cadastro-header{text-align:center;margin-bottom:30px}.cadastro-header .profile-avatar{margin-bottom:15px}.cadastro-section{margin-bottom:25px}.cadastro-section-title{font-size:18px;color:var(--primary-color);margin-bottom:15px;padding-bottom:8px;border-bottom:1px solid var(--gray-light)}.cadastro-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px 25px}.cadastro-field{display:flex;flex-direction:column}.cadastro-label{font-size:13px;color:var(--text-color-light);margin-bottom:4px}.cadastro-value{font-size:16px;color:var(--text-color);font-weight:500}.cadastro-obs{font-size:15px;color:var(--text-color);line-height:1.6;background:#f8f9fa;padding:15px;border-radius:8px}.link-discreto{display:inline-flex;align-items:center;gap:6px;text-decoration:none;font-size:14px;font-weight:500;color:var(--primary-color);transition:color .2s}.link-discreto:hover{color:var(--secondary-color)}.link-discreto svg{width:18px;height:18px}.aniversarios-widget{margin-top:15px;display:flex;flex-direction:column;gap:15px}.aniversario-section h4{font-size:14px;font-weight:700;margin-bottom:8px;padding-bottom:5px;border-bottom:1px solid var(--gray-light)}.aniversario-section.hoje h4{color:#b8860b}.aniversario-section.proximos h4{color:var(--primary-color)}.aniversario-section.passados h4{color:var(--text-color-light)}.aniversario-section ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.aniversario-section li{display:flex;justify-content:space-between;align-items:center;font-size:15px}.aniversario-section.hoje li{font-weight:700;color:#856404}.aniversario-section.proximos li span:last-child{font-size:13px;font-weight:500;color:var(--primary-color);background-color:#eef7ff;padding:2px 8px;border-radius:10px}.aniversario-section.passados li{color:var(--text-color-light)}.aniversario-section.passados li span:last-child{font-size:13px;color:var(--text-color-light)}.user-menu-name-link{font-weight:500;color:var(--text-color);text-decoration:none;padding:5px;border-radius:4px;transition:background-color .2s}.user-menu-name-link:hover{background-color:var(--background-color)}.sidebar-profile-name-link{color:inherit;text-decoration:none}.sidebar-profile-name-link:hover h3{text-decoration:underline}.menu-toggle{display:none;background:none;border:none;cursor:pointer;color:var(--secondary-color);padding:0;margin-right:15px}.menu-toggle svg{width:28px;height:28px}.overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background-color:#0006;z-index:19}@media (max-width: 992px){.sidebar{position:fixed;top:0;left:0;height:100%;transform:translate(-100%);box-shadow:2px 0 15px #0000001a}.main-area{width:100%}.app-header .user-menu-name-link,.app-header .logout-button-icon{display:none}.menu-toggle{display:block}.app-container.sidebar-open .sidebar{transform:translate(0)}.app-container.sidebar-open .overlay{display:block}}@media (max-width: 800px){.horario-grid-header,.tempo-column{display:none}.horario-grid-body{display:block}.horario-day-column{border-right:none;border-bottom:1px solid var(--gray-light)}.horario-day-column:last-child{border-bottom:none}.horario-day-column.today .day-header-mobile{background-color:#eef7ff}.day-header-mobile{display:flex;justify-content:space-between;align-items:center;padding:15px;font-weight:700;font-size:16px;cursor:pointer;color:var(--secondary-color)}.horario-day-column.is-open .day-header-mobile svg{transform:rotate(180deg)}.day-header-mobile svg{transition:transform .3s ease}.day-content{max-height:0;overflow:hidden;transition:max-height .4s ease-out;padding:0;background-color:var(--white)}.horario-day-column.is-open .day-content{max-height:1000px;transition:max-height .5s ease-in}.horario-card-wrapper{height:auto;padding:0;border-bottom:none}.horario-card-wrapper:last-child{border-bottom:none}.horario-card:not(.empty){flex-direction:row;justify-content:space-between;align-items:center;padding:12px 15px;background-color:#fcfdff!important;border-bottom:1px solid #f0f2f5;border-radius:6px;text-align:left;border-left:5px solid var(--subject-color);margin:8px 15px}.day-content .horario-card-wrapper:last-child .horario-card{border-bottom:none}.horario-card.empty{display:none}.horario-card-tempo-mobile{display:block;font-weight:700;color:var(--secondary-color);font-size:14px}.horario-card-disciplina{font-size:15px}}@media (max-width: 768px){.frequencia-summary-panel,.cadastro-grid{grid-template-columns:1fr}.turma-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}}
