*{margin:0;padding:0;box-sizing:border-box}:root{--primary-color:#3f51b5;--primary-dark:#303f9f;--accent-color:#e91e63;--background:#f5f5f5;--card-background:#fff;--text-primary:#212121;--text-secondary:#757575;--border-color:#e0e0e0;--success-color:#4caf50;--error-color:#f44336}body,html{width:100%;height:100%;margin:0;padding:0;overflow-x:clip}body{font-family:Roboto,sans-serif;background:#fff;color:var(--text-primary)}.view{display:none;min-height:100vh;background-color:var(--background)}.view.active{display:block}.app-bar{background-color:var(--primary-color);color:#fff;padding:16px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 4px rgba(0,0,0,.2);position:-webkit-sticky;position:sticky;top:0;z-index:100}.app-bar h2{font-size:20px;font-weight:500;flex:1 1;min-width:0;margin-left:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-bar-actions{display:flex;gap:4px}.icon-btn{background:none;border:none;color:inherit;cursor:pointer;padding:8px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.icon-btn:hover{background-color:hsla(0,0%,100%,.1)}.icon-btn .material-symbols-outlined{font-size:24px}#loginView{background:#fff;position:relative;width:100%;min-height:100vh;overflow-y:auto;-webkit-overflow-scrolling:touch}.legal-footer{position:relative;z-index:1;text-align:center;margin-top:18px;font-size:12.5px;color:var(--text-secondary,#757575)}.legal-footer a{color:var(--primary-color,#3f51b5);text-decoration:none;font-weight:500}.legal-footer a:hover{text-decoration:underline}.legal-footer .legal-copy{margin-top:4px;color:var(--text-secondary,#9e9e9e)}.login-bg{position:absolute;inset:0;pointer-events:none;z-index:0}.bg-shape{position:absolute;border-radius:50%;filter:blur(90px);animation:floatShape 14s ease-in-out infinite}.login-bg:before,.shape-1,.shape-2,.shape-3,.shape-4,.shape-5{display:none}@keyframes floatShape{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-20px) scale(1.04)}}.login-container{position:relative;z-index:1;max-width:400px;margin:0 auto;padding:24px;min-height:100vh;display:flex;flex-direction:column;justify-content:center;gap:16px}@media (max-height:760px),(max-width:600px){.login-container{justify-content:flex-start;padding-top:20px;padding-bottom:32px;gap:12px}#loginView .login-logo{width:64px;height:64px}}.login-header{text-align:center;animation:slideDown .6s ease-out both}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.login-logo{width:76px;height:76px;border-radius:20px;overflow:hidden;display:flex;align-items:center;justify-content:center;margin:0 auto 10px;box-shadow:0 6px 24px rgba(63,81,181,.35);transition:transform .3s;background:linear-gradient(135deg,#3f51b5,#1a237e)}.login-logo:hover{transform:scale(1.06)}.login-logo-img{width:100%;height:100%;object-fit:cover;border-radius:20px;filter:brightness(1.1) saturate(.8);mix-blend-mode:luminosity}.login-brand-bottom{text-align:center;margin-top:-2px;animation:slideDown .6s ease-out .1s both}.login-brand-img{width:70%;max-width:240px;height:auto;border-radius:10px;transition:transform .3s}.login-brand-img:hover{transform:scale(1.03)}.login-card{background:#fff;border-radius:24px;padding:28px 28px 24px;box-shadow:0 8px 40px rgba(0,0,0,.1),0 2px 8px rgba(0,0,0,.06);animation:slideUp .6s ease-out .15s both;position:relative;overflow:hidden}.login-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#3f51b5,#5c6bc0,#1a237e);border-radius:24px 24px 0 0}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.login-card-title{font-size:22px;font-weight:700;color:#1a1a2e;background:none;-webkit-text-fill-color:#1a1a2e;margin-bottom:4px}.login-card-subtitle{font-size:13px;color:#757575;margin-bottom:24px}.login-form{display:flex;flex-direction:column;gap:16px}.input-field{position:relative;display:flex;align-items:center;background:#f5f5f5;border:1.5px solid #e0e0e0;border-radius:12px;padding:0 14px;transition:border-color .25s,box-shadow .25s,background .25s}.input-field:focus-within{border-color:#3f51b5;box-shadow:0 0 0 3px rgba(63,81,181,.12);background:#fff}.input-icon{font-size:20px;color:#9e9e9e;pointer-events:none;flex-shrink:0;margin-right:10px;transition:color .25s}.input-field:focus-within .input-icon{color:#3f51b5}.input-field input{flex:1 1;padding:14px 0;background:transparent;border:none;color:#1a1a2e;font-size:15px;font-family:Roboto,sans-serif;outline:none}.input-field input::placeholder{color:#bdbdbd}.input-field input:focus{caret-color:#3f51b5}.input-line{display:none}.toggle-password{background:none;border:none;cursor:pointer;padding:4px;color:#9e9e9e;display:flex;align-items:center;flex-shrink:0;transition:color .2s}.toggle-password:hover{color:#3f51b5}.toggle-password .material-symbols-outlined{font-size:20px}.login-options{display:flex;justify-content:flex-end;margin-top:-4px}.forgot-link{font-size:13px;color:#757575;text-decoration:none;transition:color .2s}.forgot-link:hover{color:#3f51b5}.btn-login{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:15px 24px;background:linear-gradient(135deg,#3f51b5,#1a237e);color:#fff;border:none;border-radius:12px;font-size:16px;font-weight:700;font-family:Roboto,sans-serif;cursor:pointer;letter-spacing:.5px;margin-top:4px;box-shadow:0 4px 18px rgba(63,81,181,.3);transition:transform .2s,box-shadow .2s}.btn-login:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(63,81,181,.45)}.btn-login:active{transform:translateY(0);box-shadow:0 3px 10px rgba(63,81,181,.25)}.btn-login .material-symbols-outlined{font-size:20px;transition:transform .2s}.btn-login:hover .material-symbols-outlined{transform:translateX(4px)}.login-footer{text-align:center;margin-top:18px;padding-top:14px;border-top:1px solid #f0f0f0}.login-footer p{font-size:13px;color:#9e9e9e}.login-footer a{color:#3f51b5;font-weight:600;text-decoration:none;transition:opacity .2s}.login-footer a:hover{opacity:.75}.input-group{margin-bottom:24px}.input-group label{display:block;font-size:12px;color:var(--text-secondary);margin-bottom:8px;text-transform:uppercase}.input-group input,.input-group select{width:100%;padding:12px;border:none;border-bottom:2px solid var(--border-color);font-size:16px;font-family:Roboto,sans-serif;background:transparent;transition:border-color .2s}.input-group input:focus,.input-group select:focus{outline:none;border-bottom-color:var(--primary-color)}.btn-primary,.input-group select{cursor:pointer}.btn-primary{background-color:var(--primary-color);color:#fff;border:none;padding:12px 24px;font-size:14px;font-weight:500;text-transform:uppercase;border-radius:4px;transition:background-color .2s,box-shadow .2s;box-shadow:0 2px 4px rgba(0,0,0,.2)}.btn-primary:hover{background-color:var(--primary-dark);box-shadow:0 4px 8px rgba(0,0,0,.3)}.btn-secondary{background-color:transparent;color:var(--primary-color);border:1px solid var(--primary-color);padding:12px 24px;font-size:14px;font-weight:500;text-transform:uppercase;border-radius:4px;cursor:pointer;transition:background-color .2s}.btn-secondary:hover{background-color:rgba(63,81,181,.1)}.btn-full{width:100%}.login-links{margin-top:16px;display:flex;flex-direction:column;gap:8px}.login-links a{color:var(--primary-color);text-decoration:none;font-size:14px}.login-links a:hover{text-decoration:underline}.content{padding:16px 16px 140px}.search-bar{background:#fff;padding:8px 16px;border-bottom:1px solid var(--border-color)}.search-bar input{width:100%;padding:8px;border:none;font-size:16px;font-family:Roboto,sans-serif}.search-bar input:focus{outline:none}.class-card{background:var(--card-background);padding:16px;margin-bottom:12px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);cursor:pointer;transition:box-shadow .2s}.class-card:hover{box-shadow:0 4px 8px rgba(0,0,0,.15)}.class-card h3{font-size:18px;font-weight:500;margin-bottom:4px;color:var(--text-primary)}.class-card p{font-size:14px;color:var(--text-secondary)}.student-card{background:var(--card-background);padding:16px;margin-bottom:12px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);display:flex;align-items:center;gap:16px;cursor:pointer;transition:box-shadow .2s}.student-card:hover{box-shadow:0 4px 8px rgba(0,0,0,.15)}.student-avatar{width:48px;height:48px;border-radius:50%;background-color:var(--primary-color);color:#fff;display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0}.student-info-card{flex:1 1;min-width:0}.student-info-card h4{font-size:16px;font-weight:500;margin-bottom:4px;overflow-wrap:break-word}.student-info-card p{font-size:14px;color:var(--text-secondary)}.student-status{padding:4px 12px;border-radius:12px;font-size:12px;font-weight:500}.student-status.present{background-color:#e3f2fd;color:var(--primary-color)}.student-status.dues{background-color:#ffebee;color:var(--error-color)}.student-status.disabled{background-color:#eceff1;color:#607d8b}.student-card--inactive{opacity:.55;filter:grayscale(.6)}.fab{position:fixed;bottom:90px;right:24px;width:56px;height:56px;border-radius:50%;background-color:var(--accent-color);color:#fff;border:none;cursor:pointer;box-shadow:0 4px 8px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s;z-index:999}.fab:hover{transform:scale(1.1);box-shadow:0 6px 12px rgba(0,0,0,.4)}.fab .material-symbols-outlined{font-size:28px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:var(--card-background);display:flex;justify-content:space-around;padding:8px 0;box-shadow:0 -2px 4px rgba(0,0,0,.1);z-index:1000}.nav-item{background:none;border:none;color:var(--text-secondary);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 16px;transition:color .2s;flex:1 1}.nav-item.active,.nav-item:hover{color:var(--primary-color)}.nav-item .material-symbols-outlined{font-size:24px}.nav-item span:last-child{font-size:12px}.modal{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);z-index:1100;align-items:center;justify-content:center}.modal.active{display:flex}.modal-content{background:var(--card-background);padding:24px;border-radius:8px;max-width:400px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 8px 16px rgba(0,0,0,.3)}.modal-content h3{font-size:20px;font-weight:500;margin-bottom:20px}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px;position:-webkit-sticky;position:sticky;bottom:0;padding-top:14px;background:var(--card-background);border-top:1px solid var(--border-color);z-index:1}.settings-menu{max-width:320px}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;position:-webkit-sticky;position:sticky;top:0;background:var(--card-background);z-index:1}.menu-list{display:flex;flex-direction:column}.menu-item{background:none;border:none;padding:16px;display:flex;align-items:center;gap:16px;cursor:pointer;transition:background-color .2s;border-radius:4px;text-align:left}.menu-item:hover{background-color:var(--background)}.menu-item .material-symbols-outlined{color:var(--text-secondary)}.menu-item span:last-child{font-size:16px;color:var(--text-primary)}.student-form{max-width:600px;margin:0 auto}.avatar-placeholder{width:100px;height:100px;border-radius:50%;background-color:var(--background);display:flex;align-items:center;justify-content:center;margin:0 auto 24px;color:var(--text-secondary)}.avatar-placeholder .material-symbols-outlined{font-size:48px}.student-detail-card{background:var(--card-background);padding:24px;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1)}.avatar-large{width:120px;height:120px;border-radius:50%;background-color:var(--primary-color);color:#fff;display:flex;align-items:center;justify-content:center;margin:0 auto 16px}.avatar-large .material-symbols-outlined{font-size:64px}.student-detail-card h3{text-align:center;font-size:24px;font-weight:500;margin-bottom:24px}.student-info{margin-bottom:24px;min-width:0}.student-meta{min-width:0}.student-detail{overflow-wrap:anywhere;word-break:break-word}.info-row{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--border-color)}.info-row .label{color:var(--text-secondary);font-size:14px;flex-shrink:0}.info-row span:last-child{color:var(--text-primary);font-size:14px;font-weight:500;min-width:0;overflow-wrap:anywhere;word-break:break-word;text-align:right}.fees-section{margin-top:24px;padding-top:24px;border-top:2px solid var(--border-color)}.fees-section h4{font-size:18px;font-weight:500;margin-bottom:16px}.fees-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:16px;gap:16px;margin-bottom:16px}.fee-item{background:var(--background);padding:16px;border-radius:8px;display:flex;flex-direction:column;gap:8px}.fee-label{font-size:12px;color:var(--text-secondary)}.fee-value{font-size:16px;font-weight:500;color:var(--text-primary)}.fees-actions{display:flex;gap:12px;margin-bottom:16px}.fees-actions button{flex:1 1}.test-form{max-width:600px;margin:0 auto}.date-picker-section{background:var(--card-background);padding:16px;margin-bottom:16px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1)}.date-picker-btn{background:none;border:none;display:flex;align-items:center;gap:12px;font-size:18px;font-family:Roboto,sans-serif;color:var(--text-primary);cursor:pointer;padding:8px;width:100%}.date-picker-btn:hover{background-color:var(--background);border-radius:4px}.attendance-item{background:var(--card-background);padding:16px;margin-bottom:12px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1)}.attendance-header{display:flex;align-items:center;gap:16px;margin-bottom:12px}.attendance-header h4{flex:1 1;font-size:16px;font-weight:500}.send-absent-btn{background:none;border:none;color:var(--error-color);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s,transform .15s;flex-shrink:0}.send-absent-btn:hover{background-color:rgba(244,67,54,.1);transform:scale(1.15)}.send-absent-btn .material-symbols-outlined{font-size:20px}.attendance-buttons{display:flex;gap:8px}.attendance-btn{flex:1 1;min-width:0;padding:8px 6px;border:none;border-radius:4px;font-size:12px;font-weight:500;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:opacity .2s}.attendance-btn.present{background-color:var(--primary-color);color:#fff}.attendance-btn.absent{background-color:var(--error-color);color:#fff}.attendance-btn.leave{background-color:#ff9800;color:#fff}.attendance-btn.others{background-color:#9e9e9e;color:#fff}.attendance-btn:not(.present):not(.absent):not(.leave):not(.others){background-color:var(--background);color:var(--text-primary)}.attendance-btn:hover{opacity:.8}.test-card{background:var(--card-background);padding:16px;margin-bottom:12px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);cursor:pointer;transition:box-shadow .2s}.test-card:hover{box-shadow:0 4px 8px rgba(0,0,0,.15)}.test-card h4{font-size:16px;font-weight:500;margin-bottom:8px}.test-card p{font-size:14px;color:var(--text-secondary);margin-bottom:4px}.subject-tag{display:inline-block;padding:4px 12px;background-color:var(--primary-color);color:#fff;border-radius:12px;font-size:12px;font-weight:500}.test-info-card{background:var(--card-background);padding:16px;margin-bottom:16px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1)}.test-info-card p{font-size:14px;color:var(--text-primary);margin-bottom:8px}.test-result-item{background:var(--card-background);padding:16px;margin-bottom:12px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1)}.test-result-item h4{font-size:16px;font-weight:500;margin-bottom:12px;color:var(--text-primary)}.test-result-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.test-result-head h4{margin-bottom:0;min-width:0;overflow-wrap:break-word}.test-result-inputs{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);grid-gap:12px;gap:12px;align-items:start}.test-result-inputs input{min-width:0;width:100%;padding:8px 12px;border:1px solid var(--border-color);border-radius:4px;font-size:14px}.test-result-inputs input:focus{outline:none;border-color:var(--primary-color)}.empty-state{text-align:center;padding:48px 24px;color:var(--text-secondary)}.empty-state .material-symbols-outlined{font-size:64px;margin-bottom:16px;opacity:.3}.empty-state p{font-size:16px}.fee-card{background:var(--card-background);padding:16px;margin-bottom:12px;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);cursor:pointer;transition:box-shadow .2s;display:flex;justify-content:space-between;align-items:center;gap:16px}.fee-card:hover{box-shadow:0 4px 8px rgba(0,0,0,.15)}.fee-card-content{flex:1 1;min-width:0}.fee-card h4{font-size:16px;font-weight:500;margin-bottom:4px;color:var(--text-primary);overflow-wrap:break-word}.fee-amount{font-size:14px;color:var(--text-secondary)}.fee-due-value{color:var(--error-color);font-weight:500}.fee-status-badge{padding:4px 10px;background-color:var(--primary-color);color:#fff;border:none;border-radius:4px;font-family:inherit;font-size:10.5px;font-weight:600;letter-spacing:.3px;line-height:1.4;white-space:nowrap;flex-shrink:0;cursor:pointer}.fee-detail-form{max-width:600px;margin:0 auto}.fee-payments-section{margin:24px 0;padding:16px;background:var(--background);border-radius:8px}.fee-payments-section h4{font-size:16px;font-weight:500;margin-bottom:16px;color:var(--text-primary)}.fee-payment-entry{display:flex;gap:8px;align-items:center;margin-bottom:12px;padding:8px;background:#fff;border-radius:4px}.fee-payment-entry input{flex:1 1;min-width:0;padding:8px 12px;border:1px solid var(--border-color);border-radius:4px;font-size:14px;font-family:Roboto,sans-serif}.fee-payment-entry input:focus{outline:none;border-color:var(--primary-color)}.fee-payment-entry .payment-date{flex:1.2 1;min-width:132px}.fee-payment-entry .payment-amount{flex:1 1}.btn-remove-payment{background:none;border:none;color:var(--error-color);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s}.btn-remove-payment:hover{background-color:rgba(244,67,54,.1)}.btn-remove-payment .material-symbols-outlined{font-size:20px}.btn-add-payment{background:none;border:2px dashed var(--primary-color);color:var(--primary-color);padding:12px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;margin:8px auto;width:48px;height:48px;transition:background-color .2s}.btn-add-payment:hover{background-color:rgba(63,81,181,.05)}.btn-add-payment .material-symbols-outlined{font-size:24px}.fee-summary{margin:24px 0}.date-input-wrapper{display:flex;gap:12px;align-items:center}.date-input-wrapper input[type=date]{flex:1 1}.btn-clear-date{background:none;border:none;color:var(--primary-color);cursor:pointer;font-size:14px;padding:8px 12px;border-radius:4px;transition:background-color .2s;white-space:nowrap}.btn-clear-date:hover{background-color:rgba(63,81,181,.1)}.fee-action-buttons{display:flex;gap:12px;margin-top:24px}.btn-save-fee,.btn-send-receipt{flex:1 1;padding:14px 24px;font-size:14px;font-weight:500;text-transform:uppercase}#feesDueDisplay{background-color:var(--background);font-weight:500;color:var(--error-color)}@media (max-width:768px){.content{padding:12px 12px 140px}.fab{bottom:80px;right:16px}}.trial-banner{position:fixed;top:0;left:0;right:0;z-index:9999;background:linear-gradient(90deg,#ff6f00,#ff8f00);color:#fff;display:flex;align-items:center;gap:10px;padding:10px 16px;font-size:14px;font-weight:500;box-shadow:0 2px 8px rgba(0,0,0,.2)}.trial-banner .material-symbols-outlined{font-size:20px}.trial-banner-btn{margin-left:auto;background:#fff;color:#ff6f00;border:none;padding:6px 16px;border-radius:20px;font-size:13px;font-weight:700;cursor:pointer;transition:opacity .2s}.trial-banner-btn:hover{opacity:.85}body.has-trial-banner .view.active{padding-top:44px}.announcement-bar{position:fixed;top:0;left:0;right:0;z-index:9998;display:flex;align-items:center;gap:10px;height:40px;padding:0 8px 0 14px;background:linear-gradient(90deg,#b71c1c,#e53935,#b71c1c);color:#fff;font-size:13.5px;font-weight:500;box-shadow:0 2px 8px rgba(0,0,0,.18)}body.has-trial-banner .announcement-bar{top:44px}.announcement-ico{font-size:20px;flex-shrink:0}.announcement-viewport{flex:1 1;overflow:hidden;white-space:nowrap}.announcement-track{display:inline-block;white-space:nowrap}.announcement-bar.marquee .announcement-track{padding-left:100%;animation:announce-scroll 18s linear infinite}.announcement-bar.marquee:hover .announcement-track{animation-play-state:paused}@keyframes announce-scroll{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.announcement-close{background:none;border:none;color:hsla(0,0%,100%,.85);cursor:pointer;padding:4px;display:flex;align-items:center;flex-shrink:0;border-radius:50%;transition:background .2s,color .2s}.announcement-close:hover{color:#fff;background:hsla(0,0%,100%,.18)}.announcement-close .material-symbols-outlined{font-size:18px}body.has-announcement .view.active{padding-top:40px}body.has-trial-banner.has-announcement .view.active{padding-top:84px}.att-controls{margin-bottom:12px}.att-hint{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-secondary);background:#f3f5ff;border:1px solid #e3e7ff;border-radius:10px;padding:8px 10px;margin:0 0 10px}.att-hint .material-symbols-outlined{font-size:18px;color:var(--primary-color);flex-shrink:0}.att-summary{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}.att-count{flex:1 1 auto;text-align:center;font-size:12px;color:var(--text-secondary);background:#f5f5f5;border:1px solid #e0e0e0;border-radius:8px;padding:6px 8px;white-space:nowrap}.att-count b{display:block;font-size:16px;color:#212121;line-height:1.2}.att-count-present{background:#e8f5e9;border-color:#c8e6c9}.att-count-present b{color:#2e7d32}.att-count-absent{background:#ffebee;border-color:#ffcdd2}.att-count-absent b{color:#c62828}.att-count-leave{background:#fff8e1;border-color:#ffecb3}.att-count-leave b{color:#f9a825}.att-count-others{background:#ede7f6;border-color:#d1c4e9}.att-count-others b{color:#5e35b1}.att-count-total b{color:var(--primary-color)}.att-tools{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.att-search{flex:1 1 60%;min-width:0;display:flex;align-items:center;gap:8px;background:#f5f5f5;border:1.5px solid #e0e0e0;border-radius:10px;padding:0 12px;transition:border-color .2s,background .2s}.att-search:focus-within{border-color:var(--primary-color);background:#fff}.att-search .material-symbols-outlined{font-size:20px;color:#9e9e9e;flex-shrink:0}.att-search input{flex:1 1;border:none;background:transparent;outline:none;padding:11px 0;font-size:14px;min-width:0}.att-sort-btn{display:flex;align-items:center;gap:4px;white-space:nowrap;background:#fff;border:1.5px solid var(--primary-color);color:var(--primary-color);border-radius:10px;padding:0 12px;font-size:13px;font-weight:600;cursor:pointer}.att-sort-btn .material-symbols-outlined{font-size:18px}.att-save-btn{margin-bottom:4px}.att-roll{display:inline-block;background:var(--primary-color);color:#fff;font-size:11px;font-weight:700;border-radius:6px;padding:1px 6px;margin-right:8px;vertical-align:middle}.expired-container{flex-direction:column;min-height:100vh;padding:40px 24px;text-align:center;background:linear-gradient(135deg,#1a1a4e,#3f51b5);color:#fff}.expired-container,.expired-icon{display:flex;align-items:center;justify-content:center}.expired-icon{width:100px;height:100px;border-radius:50%;background:hsla(0,0%,100%,.15);margin-bottom:24px}.expired-icon .material-symbols-outlined{font-size:52px;color:#fff}.expired-container h2{font-size:28px;font-weight:700;margin-bottom:12px}.expired-container p{font-size:15px;color:hsla(0,0%,100%,.75);max-width:300px}.section-title{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:12px;margin-top:8px}.section-subtitle{font-size:13px;color:var(--text-secondary);margin-bottom:16px;margin-top:-8px}.status-card{border-radius:12px;padding:14px 18px;margin-bottom:16px;font-size:14px;font-weight:500;display:flex;align-items:center;gap:10px}.status-card.trial{background:linear-gradient(135deg,#fff3e0,#ffe0b2);color:#e65100;border:1px solid #ffcc80}.status-card.active{background:linear-gradient(135deg,#e8f5e9,#c8e6c9);color:#2e7d32;border:1px solid #a5d6a7}.status-card.expired{background:linear-gradient(135deg,#ffebee,#ffcdd2);color:#c62828;border:1px solid #ef9a9a}.stats-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:12px;gap:12px;margin-bottom:16px}.stat-card{border-radius:16px;padding:20px 16px;display:flex;flex-direction:column;align-items:center;gap:6px;color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.12);transition:transform .2s}.stat-card:hover{transform:translateY(-2px)}.stat-card .material-symbols-outlined{font-size:32px;opacity:.9}.stat-value{font-size:28px;font-weight:700;line-height:1}.stat-label{font-size:12px;opacity:.85;font-weight:500}.stat-blue{background:linear-gradient(135deg,#1565c0,#1976d2)}.stat-green{background:linear-gradient(135deg,#2e7d32,#388e3c)}.stat-orange{background:linear-gradient(135deg,#e65100,#f57c00)}.stat-red{background:linear-gradient(135deg,#b71c1c,#d32f2f)}.wallet-mini-card{background:var(--card-background);border-radius:12px;padding:16px;margin-bottom:16px;box-shadow:0 2px 8px rgba(0,0,0,.08)}.wallet-mini-row{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:14px;color:var(--text-primary)}.wallet-mini-row .material-symbols-outlined{font-size:20px;color:var(--primary-color)}.wallet-mini-value{margin-left:auto;font-weight:700;font-size:16px;color:var(--primary-color)}.btn-recharge-mini{width:100%;margin-top:12px;padding:10px;background:linear-gradient(135deg,#3f51b5,#5c6bc0);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .2s}.btn-recharge-mini:hover{opacity:.9}.quick-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px;gap:10px;margin-bottom:16px}.quick-action-btn{background:var(--card-background);border:none;border-radius:12px;padding:16px 8px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;font-size:11px;font-family:Roboto,sans-serif;color:var(--text-secondary);box-shadow:0 2px 6px rgba(0,0,0,.08);transition:all .2s}.quick-action-btn:hover{background:var(--primary-color);color:#fff;transform:translateY(-2px)}.quick-action-btn .material-symbols-outlined{font-size:26px}.plan-cards{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:12px;gap:12px;margin-bottom:8px}.plan-card{background:var(--card-background);border-radius:16px;padding:20px 16px;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,.08);border:2px solid transparent;position:relative;transition:all .2s}.plan-card:hover{transform:translateY(-2px)}.plan-card:hover,.plan-popular{border-color:var(--primary-color)}.plan-popular{background:linear-gradient(135deg,#e8eaf6,#f3f4ff)}.plan-best{border-color:#e91e63;background:linear-gradient(135deg,#fce4ec,#fff0f5)}.plan-badge{position:absolute;top:-10px;left:50%;transform:translateX(-50%);background:var(--primary-color);color:#fff;font-size:11px;font-weight:700;padding:3px 12px;border-radius:20px;white-space:nowrap}.plan-best .plan-badge{background:#e91e63}.plan-duration{font-size:14px;font-weight:600;color:var(--text-secondary);margin-bottom:8px;margin-top:8px}.plan-price{font-size:28px;font-weight:700;color:var(--primary-color);margin-bottom:6px}.plan-best .plan-price{color:#e91e63}.plan-desc{font-size:12px;color:var(--text-secondary);margin-bottom:14px}.btn-subscribe{width:100%;padding:10px;background:var(--primary-color);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .2s}.plan-best .btn-subscribe{background:#e91e63}.btn-subscribe:hover{opacity:.85}.current-plan-banner{border-radius:12px;padding:14px 18px;margin-bottom:16px;font-size:14px;font-weight:500;background:linear-gradient(135deg,#e8f5e9,#c8e6c9);color:#2e7d32;border:1px solid #a5d6a7}.addon-cards{display:flex;flex-direction:column;gap:12px}.addon-card{background:var(--card-background);border-radius:12px;padding:16px;display:flex;align-items:center;gap:14px;box-shadow:0 2px 6px rgba(0,0,0,.08)}.addon-card .material-symbols-outlined{font-size:28px;color:var(--primary-color)}.addon-title{font-size:15px;font-weight:600;color:var(--text-primary)}.addon-price{font-size:13px;color:var(--text-secondary);margin-top:2px}.btn-addon{margin-left:auto;padding:8px 20px;background:var(--primary-color);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .2s;white-space:nowrap}.btn-addon:hover{opacity:.85}.wallet-balance-cards{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:12px;gap:12px;margin-bottom:12px}.wallet-balance-card{border-radius:16px;padding:24px 16px;text-align:center;color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.15)}.wallet-sms{background:linear-gradient(135deg,#1565c0,#1976d2)}.wallet-wa{background:linear-gradient(135deg,#1b5e20,#25d366)}.wallet-balance-card .material-symbols-outlined{font-size:36px;margin-bottom:8px}.wallet-balance-value{font-size:32px;font-weight:700;margin-bottom:4px}.wallet-balance-label{font-size:12px;opacity:.85}.wallet-rate-note{text-align:center;font-size:13px;color:var(--text-secondary);margin-bottom:16px}.recharge-type-toggle{display:flex;gap:8px;margin-bottom:16px;background:var(--background);border-radius:10px;padding:4px}.recharge-type-btn{flex:1 1;padding:10px;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;background:transparent;color:var(--text-secondary);transition:all .2s}.recharge-type-btn.active{background:var(--primary-color);color:#fff;box-shadow:0 2px 8px rgba(63,81,181,.3)}.recharge-packages{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:12px;gap:12px}.recharge-card{background:var(--card-background);border-radius:12px;padding:16px;text-align:center;box-shadow:0 2px 6px rgba(0,0,0,.08);border:2px solid transparent;position:relative;transition:all .2s}.recharge-card:hover{border-color:var(--primary-color)}.recharge-popular{border-color:#e91e63}.recharge-badge{position:absolute;top:-10px;left:50%;transform:translateX(-50%);background:#e91e63;color:#fff;font-size:10px;font-weight:700;padding:2px 10px;border-radius:20px}.recharge-messages{font-size:15px;font-weight:600;color:var(--text-primary);margin-bottom:4px;margin-top:6px}.recharge-amount{font-size:18px;font-weight:700;color:var(--primary-color);margin-bottom:12px}.btn-recharge-pkg{width:100%;padding:8px;background:var(--primary-color);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .2s}.btn-recharge-pkg:hover{opacity:.85}.transaction-item{background:var(--card-background);border-radius:8px;padding:12px 16px;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 1px 4px rgba(0,0,0,.06)}.transaction-item>:first-child{min-width:0}.transaction-item .tx-label{font-size:14px;color:var(--text-primary);overflow-wrap:break-word}.transaction-item .tx-amount{flex-shrink:0}.transaction-item .tx-date{font-size:12px;color:var(--text-secondary);margin-top:2px}.transaction-item .tx-amount{font-size:15px;font-weight:700;color:var(--primary-color)}.report-class-card{background:var(--card-background);border-radius:12px;padding:16px;margin-bottom:12px;box-shadow:0 2px 6px rgba(0,0,0,.08)}.report-class-name{font-size:15px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.report-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:6px}.report-bar-label{font-size:12px;color:var(--text-secondary);width:60px;flex-shrink:0}.report-bar-track{flex:1 1;height:8px;background:var(--background);border-radius:4px;overflow:hidden}.report-bar-fill{height:100%;border-radius:4px;transition:width .6s ease}.report-bar-fill.present{background:#4caf50}.report-bar-fill.absent{background:#f44336}.report-bar-fill.leave{background:#ff9800}.report-bar-pct{font-size:12px;font-weight:600;color:var(--text-primary);width:36px;text-align:right}.fee-report-card{margin-bottom:12px;align-items:center}.fee-report-card,.fees-collection-summary{background:var(--card-background);border-radius:12px;padding:16px;box-shadow:0 2px 6px rgba(0,0,0,.08);display:flex;justify-content:space-between}.fees-collection-summary{margin-bottom:16px;text-align:center}.fees-collection-summary .fcs-item{display:flex;flex-direction:column;gap:4px;flex:1 1;min-width:0}.fees-collection-summary .fcs-label{font-size:12px;color:var(--text-secondary)}.fees-collection-summary .fcs-value{font-size:18px;font-weight:700;color:var(--text-primary)}.fees-collection-summary .fcs-collected{color:#4caf50}.fees-collection-summary .fcs-due{color:#e53935}.fee-report-name{font-size:15px;font-weight:600;color:var(--text-primary)}.fee-report-sub{font-size:12px;color:var(--text-secondary);margin-top:2px}.fee-report-due{font-size:18px;font-weight:700;color:var(--error-color)}.notif-balance-row{display:flex;align-items:center;gap:8px;background:var(--card-background);padding:12px 16px;border-radius:10px;font-size:14px;box-shadow:0 2px 6px rgba(0,0,0,.06);flex-wrap:wrap}.notif-balance-row .material-symbols-outlined{font-size:20px;color:var(--primary-color)}.notif-count-row{background:#e8eaf6;border-radius:8px;padding:10px 14px;font-size:13px;color:var(--primary-color);font-weight:500}.notif-history-item{background:var(--card-background);border-radius:10px;padding:14px 16px;margin-bottom:10px;box-shadow:0 1px 4px rgba(0,0,0,.06)}.notif-history-item .nh-header{display:flex;justify-content:space-between;margin-bottom:6px}.notif-history-item .nh-class{font-size:13px;font-weight:600;color:var(--primary-color)}.notif-history-item .nh-date{font-size:12px;color:var(--text-secondary)}.notif-history-item .nh-msg{font-size:14px;color:var(--text-primary)}.notif-history-item .nh-meta{font-size:12px;color:var(--text-secondary);margin-top:4px}#registerView .login-container{justify-content:flex-start;padding-top:24px;gap:8px;overflow-y:auto}#registerView .login-brand-top{width:80px;height:80px;margin:0 auto;border-radius:18px;overflow:hidden;box-shadow:0 4px 16px rgba(0,0,0,.12)}#registerView .login-brand-top .login-logo-img{width:80px;height:80px;object-fit:cover;border-radius:18px}#registerView .login-brand-bottom{margin-top:0}#registerView .login-brand-img{max-width:160px}#registerView .login-card{padding:20px 24px 16px}#registerView .login-card-subtitle{margin-bottom:16px}#registerView .input-field{margin-bottom:4px}#registerView .login-form .input-field input{padding:10px 12px 10px 40px;font-size:14px}#registerView .btn-login{margin-top:8px;padding:12px}.app-dialog{max-width:380px}#appDialogMessage{white-space:pre-wrap;font-size:15px;line-height:1.45;color:var(--text-primary)}.app-dialog-input{width:100%;padding:10px 12px;border:1px solid var(--border-color);border-radius:8px;font-size:14px;font-family:Roboto,sans-serif;margin-top:14px}.app-dialog-input:focus{outline:none;border-color:var(--primary-color)}.tpl-preview{background:var(--background);border-radius:8px;line-height:1.45;white-space:pre-wrap;color:var(--text-primary);min-height:48px}#tplPickerType,.tpl-preview{padding:12px;font-size:14px;border:1px solid var(--border-color)}#tplPickerType{width:100%;border-radius:8px;font-family:Roboto,sans-serif;background:#fff}@media (min-width:769px){body{background:var(--background)}.app-bar,.content{padding-left:max(24px,calc((100% - 1200px) / 2));padding-right:max(24px,calc((100% - 1200px) / 2))}#classesList,#feesList,#studentsList,#testsList{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:16px;gap:16px;align-content:start}#classesList>*,#feesList>*,#studentsList>*,#testsList>*{grid-column:1/-1}#classesList>.class-card,#feesList>.fee-card,#studentsList>.fee-card,#studentsList>.student-card,#studentsList>.test-card,#testsList>.test-card{grid-column:auto;margin-bottom:0}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.quick-actions{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.plan-cards,.recharge-packages{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.student-detail-card,.test-info-card{max-width:760px;margin-left:auto;margin-right:auto}.bottom-nav{justify-content:center;gap:12px}.nav-item{flex:0 0 auto;min-width:130px;border-radius:8px}.nav-item:hover{background-color:rgba(63,81,181,.06)}.fab{right:max(24px,calc((100% - 1200px) / 2 + 24px))}}#addTeacherModal .modal-content.user-modal{padding:0;border-radius:18px;overflow:hidden;max-width:430px;max-height:92vh;display:flex;flex-direction:column;box-shadow:0 18px 48px rgba(26,35,126,.28)}.user-modal-head{position:-webkit-sticky;position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:14px;padding:20px 18px;background:linear-gradient(135deg,#3f51b5,#1a237e);color:#fff}.user-modal-avatar{width:46px;height:46px;border-radius:14px;background:hsla(0,0%,100%,.18);display:flex;align-items:center;justify-content:center;flex-shrink:0}.user-modal-avatar .material-symbols-outlined{font-size:26px;color:#fff}.user-modal-titles{flex:1 1;min-width:0}.user-modal-titles h3{margin:0;font-size:19px;font-weight:700;color:#fff}.user-modal-sub{margin:2px 0 0;font-size:12.5px;color:hsla(0,0%,100%,.8)}.user-modal-close{color:#fff;flex-shrink:0}.user-modal-close:hover{background:hsla(0,0%,100%,.15)}.user-modal-body{padding:18px 20px 4px;flex:1 1 auto;min-height:0;overflow-y:auto}.field-label{display:block;font-size:11.5px;font-weight:600;letter-spacing:.3px;text-transform:uppercase;color:var(--text-secondary);margin:0 0 7px 2px}.field-req{color:#e53935}#addTeacherModal .input-field{margin-bottom:16px}.field-hint{display:block;font-size:12px;color:#9e9e9e;margin:-10px 2px 14px}.field-section{font-size:12px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--primary-color);margin:6px 0 14px;padding-top:14px;border-top:1px solid var(--border-color)}.perm-toggle-row{justify-content:space-between;background:#f3f5ff;border:1px solid #e3e7ff;border-radius:14px;padding:12px 14px;margin:4px 0 8px}.perm-toggle-row,.perm-toggle-text{display:flex;align-items:center;gap:12px}.perm-toggle-text{min-width:0}.perm-toggle-text>.material-symbols-outlined{color:var(--primary-color);font-size:24px;flex-shrink:0}.perm-toggle-title{font-size:14.5px;font-weight:600;color:var(--text-primary)}.perm-toggle-desc{font-size:12px;color:var(--text-secondary);margin-top:1px}.switch{position:relative;display:inline-block;width:46px;height:26px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.switch-slider{position:absolute;cursor:pointer;inset:0;background:#cfd3e8;border-radius:26px;transition:background .25s}.switch-slider:before{content:"";position:absolute;height:20px;width:20px;left:3px;top:3px;background:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .25s}.switch input:checked+.switch-slider{background:var(--primary-color)}.switch input:checked+.switch-slider:before{transform:translateX(20px)}.switch input:focus-visible+.switch-slider{box-shadow:0 0 0 3px rgba(63,81,181,.25)}.user-modal-actions{padding:4px 20px 20px;margin-top:8px}#addTeacherModal .btn-primary,#addTeacherModal .btn-secondary{border-radius:12px;padding:12px 22px}#addTeacherModal .btn-primary{background:linear-gradient(135deg,#3f51b5,#1a237e)}.toast-host{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);z-index:3000;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{background:#1f2937;color:#fff;padding:11px 16px;border-radius:10px;font-size:14px;box-shadow:0 6px 20px rgba(0,0,0,.25);max-width:90vw}.toast.ok{background:#1b5e20}.toast.err{background:#b71c1c}.toast.warn{background:#8a5a00}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:2000;display:flex;align-items:center;justify-content:center;padding:16px}.modal-box{background:#fff;border-radius:16px;width:100%;max-width:460px;max-height:92vh;display:flex;flex-direction:column;overflow:hidden}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border-color)}.modal-head h3{margin:0;font-size:16px}.modal-head .x{border:none;background:none;font-size:24px;line-height:1;color:var(--text-secondary);cursor:pointer}.modal-body{padding:18px;overflow-y:auto}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 18px;border-top:1px solid var(--border-color)}.spinner{width:24px;height:24px;border:3px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:uikitspin .7s linear infinite}@keyframes uikitspin{to{transform:rotate(1turn)}}.center-load{display:flex;justify-content:center;padding:48px}