@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600;700&family=Playfair+Display:wght@500;700;900&display=swap";@import "https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Nunito:wght@300;400;500;600;700&family=Oswald:wght@600;700&family=Playfair+Display:wght@400;600;700;800&display=swap";.portal-page,.portal-page *{box-sizing:border-box}.portal-page{min-height:100vh;color:var(--white);background:var(--navy-dark);flex-direction:column;font-family:DM Sans,sans-serif;display:flex;position:relative;overflow:hidden}.portal-bg{z-index:0;background:radial-gradient(70% 60% at 10%,#0e6b6b73 0%,#0000 65%),radial-gradient(50% 70% at 90% 20%,#c8960c14 0%,#0000 60%),linear-gradient(145deg,#051a1a 0%,#073535 50%,#051a1a 100%),url(https://images.unsplash.com/photo-1580582932707-520aed937b7b?auto=format&fit=crop&w=1800&q=80) 50%/cover no-repeat;animation:22s ease-in-out infinite alternate portalSlowZoom;position:fixed;inset:0}.portal-overlay{z-index:1;background:linear-gradient(160deg,#042323f7 0%,#063232f2 50%,#042323f7 100%);position:fixed;inset:0}.portal-content{z-index:2;flex-direction:column;flex:1;width:min(1100px,100% - 3rem);margin:0 auto;display:flex;position:relative}.portal-top-bar{border-bottom:1px solid #ffffff1f;justify-content:space-between;align-items:center;gap:16px;padding:1.1rem 0 .6rem;animation:.7s both portalFadeDown;display:flex}.portal-school-brand{align-items:center;gap:.8rem;display:flex}.portal-logo{object-fit:contain;background:#ffffff0a;border:1px solid #ffffff24;border-radius:50%;flex-shrink:0;width:46px;height:46px;padding:4px;box-shadow:0 4px 14px #00000040}.portal-school-name{font-family:var(--font-heading);color:var(--white);font-size:clamp(.95rem,2vw,1.2rem);font-weight:700;line-height:1.2}.portal-school-name small{font-family:var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--gold-light);font-size:.65rem;font-weight:400;display:block}.portal-top-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.portal-tag{letter-spacing:.14em;text-transform:uppercase;color:#ffffff80;font-size:.7rem}.portal-hero-centre{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:1.5rem 0 1rem;display:flex}.portal-hero-eyebrow{letter-spacing:.26em;text-transform:uppercase;color:var(--gold-light);margin-bottom:.7rem;font-size:.68rem;animation:.8s .1s both portalFadeUp}.portal-hero-title{font-family:var(--font-heading);color:var(--white);text-shadow:0 2px 24px #0000004d;font-size:clamp(2rem,4.5vw,3.6rem);font-weight:900;line-height:1.05;animation:.8s .2s both portalFadeUp}.portal-hero-title span{color:var(--gold-light)}.portal-gold-bar{background:var(--gold);border-radius:2px;width:50px;height:3px;margin:1rem auto;animation:.8s .3s both portalFadeUp}.portal-hero-desc{color:#ffffffb8;max-width:540px;font-size:clamp(.82rem,1.4vw,.98rem);line-height:1.7;animation:.8s .4s both portalFadeUp}.portal-hero-cta{background:var(--gold);color:var(--navy-dark);border-radius:50px;align-items:center;gap:.5rem;margin-top:1.2rem;padding:.65rem 1.7rem;font-size:.88rem;font-weight:600;text-decoration:none;transition:background .25s,transform .2s;animation:.8s .5s both portalFadeUp;display:inline-flex;box-shadow:0 5px 20px #c8960c66}.portal-hero-cta:hover{background:var(--gold-light);transform:translateY(-2px)}.portal-info-row{grid-template-columns:repeat(3,1fr);gap:.9rem;padding:0 0 1rem;animation:.8s .55s both portalFadeUp;display:grid}.portal-info-card{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff12;border:1px solid #ffffff21;border-radius:12px;align-items:flex-start;gap:.75rem;padding:1rem 1rem .9rem;transition:background .22s,transform .22s;display:flex}.portal-info-card:hover{background:#ffffff1f;transform:translateY(-3px)}.portal-info-icon{width:42px;height:42px;color:var(--gold-light);letter-spacing:.08em;background:#c8960c1a;border:1px solid #c8960c38;border-radius:12px;flex-shrink:0;place-items:center;font-size:.85rem;font-weight:800;display:grid}.portal-info-icon i,.portal-ql-icon i{font-size:1rem;line-height:1}.portal-info-text h4{font-family:var(--font-heading);color:var(--white);margin-bottom:.25rem;font-size:.92rem;font-weight:700}.portal-info-text p{color:#ffffff8c;font-size:.75rem;line-height:1.55}.portal-quick-links{padding-bottom:1rem}.portal-ql-label{letter-spacing:.2em;text-transform:uppercase;color:var(--gold-light);margin-bottom:.55rem;font-size:.62rem;font-weight:600;animation:.8s .6s both portalFadeUp}.portal-ql-row{grid-template-columns:repeat(4,1fr);gap:.75rem;animation:.8s .65s both portalFadeUp;display:grid}.portal-ql-card{appearance:none;text-align:center;color:var(--white);background:#ffffff0d;border:1px solid #ffffff1a;border-radius:11px;padding:.85rem .6rem;text-decoration:none;display:block;position:relative;overflow:hidden}.portal-ql-card:after{content:"";opacity:0;background:linear-gradient(135deg,#c8960c26,#0000);transition:opacity .22s;position:absolute;inset:0}.portal-ql-card:hover{border-color:var(--gold);background:#ffffff1a;transform:translateY(-3px)}.portal-ql-card:hover:after{opacity:1}.portal-ql-icon{width:34px;height:34px;color:var(--gold-light);letter-spacing:.08em;background:#c8960c1f;border:1px solid #c8960c38;border-radius:10px;place-items:center;margin:0 auto .4rem;font-size:.72rem;font-weight:800;display:grid}.portal-ql-name{font-family:var(--font-heading);margin-bottom:.15rem;font-size:.85rem;font-weight:700;display:block}.portal-ql-arrow{letter-spacing:.08em;color:var(--gold-light);font-size:.62rem;font-weight:500}.portal-footer{z-index:2;text-align:center;color:#ffffff61;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#094f4f59;border-top:1px solid #ffffff1a;padding:.8rem 1.5rem;font-size:.72rem;animation:.8s .7s both portalFadeUp;position:relative}.portal-footer span{margin:0 .3rem;display:inline-block}.portal-footer a{color:var(--gold-light);font-weight:600;text-decoration:none;transition:color .2s}.portal-footer a:hover{color:var(--gold);text-decoration:underline}.portal-foot-divider{vertical-align:middle;background:#fff3;width:1px;height:.75em;margin:0 .5rem;display:inline-block}.portal-footer-note{color:#ffffff40;font-size:.65rem}@keyframes portalFadeDown{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes portalFadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes portalSlowZoom{0%{transform:scale(1)}to{transform:scale(1.07)}}@media (width<=700px){.portal-content{width:min(100% - 1.5rem,1100px)}.portal-tag{display:none}.portal-top-bar{padding-top:.9rem}.portal-hero-title{font-size:clamp(1.8rem,8vw,2.6rem)}.portal-hero-desc br{display:none}.portal-hero-centre{padding:1rem 0 .6rem}.portal-info-row{grid-template-columns:1fr;gap:.65rem}.portal-ql-row{grid-template-columns:repeat(2,1fr);gap:.65rem}.portal-info-card{padding:.8rem .9rem}.portal-ql-card{padding:.8rem .5rem}.portal-ql-icon{width:30px;height:30px}.portal-ql-name{font-size:.8rem}}@media (width<=420px){.portal-crest{width:38px;height:38px;font-size:.95rem}.portal-school-name{font-size:.85rem}.portal-hero-cta{padding:.6rem 1.4rem;font-size:.82rem}.portal-head-link{padding:.58rem .9rem;font-size:.72rem}}:root{--navy:#0e6b6b;--navy-dark:#094f4f;--gold:#c8960c;--gold-light:#e8b020;--gold-pale:#f5e6c0;--white:#fff;--light-bg:#f9f6ef;--text:#1a2e2e;--text-muted:#5a6e6e;--border:#e2d5b0;--success-bg:#e6f4ea;--success-text:#137333;--danger-bg:#fce8e6;--danger-text:#c5221f;--warning-bg:#fef7e0;--warning-text:#b06000;--info-bg:#e8f0fe;--info-text:#1a73e8;--font-heading:"Playfair Display", serif;--font-body:"Nunito", sans-serif;--font-stats:"Oswald", sans-serif;--font-counter:"Bebas Neue", sans-serif;--sidebar-width:240px;--header-height:64px;--shadow-sm:0 2px 8px #0e6b6b0f;--shadow-md:0 4px 20px #0e6b6b14;--shadow-lg:0 12px 40px #0e6b6b29;--transition:all .3s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background:var(--light-bg);color:var(--text);line-height:1.6;overflow-x:hidden}#root{width:100%;min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);color:var(--navy);font-weight:700}a{color:inherit;transition:var(--transition);text-decoration:none}button{font-family:var(--font-body);cursor:pointer;transition:var(--transition);background:0 0;border:none}input,select,textarea{font-family:var(--font-body);outline:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--gold-pale);border-radius:4px}::-webkit-scrollbar-thumb{background:var(--navy);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--navy-dark)}@keyframes shimmer{0%{background-position:200%}to{background-position:-200%}}@keyframes heroFadeUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes badgePop{0%{transform:scale(.5)}70%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes ringPulse{0%{opacity:.8;transform:scale(1)}50%{opacity:0;transform:scale(1.15)}to{opacity:0;transform:scale(1)}}@keyframes particleRise{0%{opacity:0;transform:translateY(0)}20%{opacity:1}80%{opacity:1}to{opacity:0;transform:translateY(-120px)}}@keyframes lineGrow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes twinkle{0%{opacity:.2;transform:scale(.6)}50%{opacity:1;transform:scale(1)}to{opacity:.2;transform:scale(.6)}}@keyframes ticker{0%{transform:translate(100%)}to{transform:translate(-100%)}}@keyframes morphBlob{0%{border-radius:60% 40% 30% 70%/60% 30% 70% 40%}50%{border-radius:30% 60% 70% 40%/50% 60% 30%}to{border-radius:60% 40% 30% 70%/60% 30% 70% 40%}}@keyframes spinSlow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spinReverse{0%{transform:rotate(360deg)}to{transform:rotate(0)}}@keyframes floatOrbA{0%{transform:translateY(0)}50%{transform:translateY(-20px)}to{transform:translateY(0)}}@keyframes glitchTitle{0%{transform:skew(0)}2%{transform:skew(-3deg)}4%{transform:skew(3deg)}6%{transform:skew(0)}to{transform:skew(0)}}@keyframes miniCardFloat{0%{transform:translateY(0)}50%{transform:translateY(-8px)}to{transform:translateY(0)}}@keyframes heroImgZoom{0%{transform:scale(1)}50%{transform:scale(1.04)}to{transform:scale(1)}}@keyframes gridFloat{0%{transform:perspective(1000px)rotateX(60deg)translateY(0)}to{transform:perspective(1000px)rotateX(60deg)translateY(100px)}}@keyframes aboutImgFloat{0%{transform:translateY(0)rotate(.4deg)}50%{transform:translateY(-14px)rotate(-.4deg)}to{transform:translateY(0)rotate(.4deg)}}@keyframes badgeCardBounce{0%{opacity:0;transform:scale(0)rotate(-10deg)}70%{opacity:1;transform:scale(1.12)rotate(5deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes lineExpandA{0%{width:0}to{width:60px}}@keyframes pulseBorderA{0%{box-shadow:0 0 #c8960c66}70%{box-shadow:0 0 0 10px #c8960c00}to{box-shadow:0 0 #c8960c00}}.text-navy{color:var(--navy)}.text-gold{color:var(--gold)}.bg-navy{background-color:var(--navy)}.bg-gold{background-color:var(--gold)}.btn-primary{background:linear-gradient(135deg, var(--navy), var(--navy-dark));color:var(--white);border-radius:50px;padding:10px 24px;font-weight:600;position:relative;overflow:hidden}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 4px 15px #0e6b6b4d}.btn-gold{background:linear-gradient(135deg, var(--gold), var(--gold-light), #f5c842);color:var(--navy-dark);background-size:200%;border-radius:50px;padding:10px 24px;font-weight:800;animation:3s linear infinite shimmer;position:relative;overflow:hidden}.btn-gold:hover{transform:translateY(-2px);box-shadow:0 6px 20px #c8960c4d}.btn-outline{border:1.5px solid var(--navy);color:var(--navy);border-radius:8px;padding:8px 16px;font-weight:600}.btn-outline:hover{background:var(--navy);color:var(--white)}.input-field{border:1.5px solid var(--border);font-family:var(--font-body);width:100%;transition:var(--transition);background:var(--white);border-radius:11px;padding:12px 14px;font-size:.88rem}.input-field:focus{border-color:var(--navy);background:#0e6b6b05;transform:translateY(-2px);box-shadow:0 0 0 3px #0e6b6b26}.empty-state{border:2px dashed var(--border);text-align:center;color:var(--text-muted);background:#0e6b6b05;border-radius:16px;padding:40px}.student-dashboard-grid,.student-quick-grid,.student-news-grid,.student-fee-options,.student-attendance-stats,.student-profile-grid,.student-report-info-grid,.student-card,.student-polaroid-card,.student-fee-main-card,.student-fee-option-card,.student-profile-card,.student-table-card,.student-report-card{min-width:0}.student-table-wrap{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.student-table-wrap table{min-width:640px}.student-week-attendance-table{min-width:0!important}.teacher-table-wrap{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.teacher-table-wrap table{min-width:640px}@media (width<=1180px){.student-dashboard-grid{grid-template-columns:1fr!important}.student-fee-options,.student-attendance-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}.student-profile-grid{grid-template-columns:1fr!important}.student-header-right{gap:12px!important}.student-search-input{width:140px!important}.teacher-dashboard-grid,.teacher-quick-grid{grid-template-columns:1fr!important}}@media (width<=760px){.teacher-shell{display:block!important}.teacher-sidebar{display:none!important}.teacher-mobile-topbar{background:linear-gradient(135deg,#051a1a 0%,#094f4f 100%);border-bottom:1px solid #c8960c47;justify-content:space-between;align-items:center;gap:14px;padding:12px 16px;display:flex!important}.teacher-mobile-nav{border-bottom:3px solid var(--gold);background:linear-gradient(135deg,#051a1a 0%,#0a5d5d 100%);grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0 16px 12px;display:grid!important}.teacher-mobile-nav a{justify-content:center;min-width:0;gap:6px!important;padding:8px 6px!important;font-size:.68rem!important}.teacher-mobile-nav a span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.teacher-main{margin-left:0!important}.teacher-header{flex-direction:row!important;align-items:center!important;gap:12px!important;height:auto!important;padding:12px 16px!important;position:sticky!important;top:0!important}.teacher-header-right{margin-left:auto;flex-wrap:nowrap!important;gap:8px!important}.teacher-content{padding:16px 14px 24px!important}.teacher-hero-banner{border-radius:14px!important;padding:20px 18px!important}.teacher-dashboard-grid,.teacher-quick-grid,.teacher-class-list{grid-template-columns:1fr!important}.teacher-class-card,.teacher-attendance-card{border-radius:14px!important;padding:18px!important}.teacher-attendance-header,.teacher-attendance-footer,.teacher-attendance-actions{flex-direction:column!important;align-items:stretch!important;gap:12px!important}.teacher-attendance-header select,.teacher-attendance-actions button{width:100%}.teacher-attendance-list{max-height:none!important;padding-right:0!important}.student-shell{display:block!important}.student-sidebar{display:none!important}.student-mobile-topbar{background:linear-gradient(135deg,#051a1a 0%,#094f4f 100%);border-bottom:1px solid #c8960c47;justify-content:space-between;align-items:center;gap:14px;padding:12px 16px;display:flex!important}.student-mobile-nav{border-bottom:3px solid var(--gold);background:linear-gradient(135deg,#051a1a 0%,#0a5d5d 100%);grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0 16px 12px;display:grid!important}.student-mobile-nav a{justify-content:center;min-width:0;gap:6px!important;padding:8px 6px!important;font-size:.68rem!important}.student-mobile-nav a span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.student-main{margin-left:0!important}.student-header{flex-direction:row!important;align-items:center!important;gap:12px!important;height:auto!important;padding:12px 16px!important;position:sticky!important;top:0!important}.student-header-right{margin-left:auto;flex-wrap:nowrap!important;gap:8px!important}.student-search,.student-breadcrumb{display:none!important}.student-content{padding:16px 14px 24px!important}.student-dashboard-grid,.student-quick-grid,.student-news-grid,.student-fee-options,.student-attendance-stats,.student-profile-grid,.student-report-info-grid{grid-template-columns:1fr!important}.student-card,.student-polaroid-card,.student-fee-main-card,.student-fee-option-card,.student-profile-card,.student-report-card{border-radius:14px!important;padding:20px!important}.student-badge-row,.student-fee-card-top,.student-fee-stats,.student-fee-progress,.student-profile-header,.student-attendance-card-header,.student-report-header,.student-report-summary,.student-report-signatures{flex-direction:column!important;align-items:stretch!important;gap:14px!important}.student-fee-main-card{margin-bottom:28px!important}.student-fee-option-card{text-align:left!important;align-items:flex-start!important}.student-print-actions{justify-content:stretch!important}.student-print-actions button{width:100%}.student-report-card{overflow:visible!important}.student-report-card h1{font-size:1.45rem!important;line-height:1.15!important}.student-report-signatures>div{width:100%!important}.student-attendance-week-controls{grid-template-columns:36px minmax(0,1fr) 36px;width:100%;display:grid!important}.student-attendance-week-controls input{width:100%;min-width:0}}@media (width<=420px){.student-content{padding:14px!important}.student-card,.student-polaroid-card,.student-fee-main-card,.student-fee-option-card,.student-profile-card,.student-report-card{padding:16px!important}}
