.portal-page{background:radial-gradient(circle at 85% 10%,color-mix(in srgb,var(--purple) 22%,transparent),transparent 35%),var(--bg);min-height:100vh;color:var(--white)}.portal-header{border-bottom:1px solid color-mix(in srgb,var(--white) 12%,transparent);background:color-mix(in srgb,var(--bg) 92%,transparent);z-index:5;justify-content:space-between;align-items:center;gap:20px;padding:20px max(22px,50vw - 580px);display:flex;position:relative}.portal-logo{color:var(--white);letter-spacing:-.05em;font-size:20px;font-weight:900;text-decoration:none}.portal-logo span{color:var(--blue)}.portal-header nav{align-items:center;gap:18px;display:flex}.portal-header nav a,.portal-header nav button{color:var(--muted);font-size:14px;text-decoration:none}.portal-header nav button{cursor:pointer;background:0 0;border:0}.portal-header nav a:hover,.portal-header nav button:hover{color:var(--lime)}.portal-main{width:min(1160px,100% - 44px);margin:0 auto;padding:64px 0 80px}.portal-hero{grid-template-columns:1.25fr .75fr;align-items:center;gap:36px;margin-bottom:38px;display:grid}.portal-hero h1{margin:18px 0;font-size:clamp(42px,6vw,76px)}.portal-hero .portal-muted{max-width:650px}.portal-admission-card{background:linear-gradient(145deg,color-mix(in srgb,var(--purple) 30%,var(--panel)),var(--panel));border:1px solid var(--purple);box-shadow:0 24px 70px color-mix(in srgb,var(--bg) 70%,transparent);border-radius:24px;padding:26px}.portal-admission-card small{color:var(--blue);letter-spacing:.12em;font-weight:900}.portal-admission-card strong{margin:10px 0;font-size:25px;display:block}.portal-admission-card p{color:var(--muted);margin:0}.portal-muted{color:var(--muted);font-size:17px;line-height:1.7}.portal-tabs{border-bottom:1px solid color-mix(in srgb,var(--white) 12%,transparent);flex-wrap:wrap;gap:10px;margin:34px 0 24px;padding-bottom:16px;display:flex}.portal-tabs button{border:1px solid color-mix(in srgb,var(--white) 18%,transparent);background:var(--panel);color:var(--muted);cursor:pointer;border-radius:999px;padding:12px 18px;font-weight:800}.portal-tabs button[aria-selected=true]{background:var(--lime);border-color:var(--lime);color:var(--bg)}.portal-panel{background:color-mix(in srgb,var(--panel) 94%,var(--bg));border:1px solid color-mix(in srgb,var(--white) 12%,transparent);border-radius:26px;padding:34px}.portal-panel h2{margin-bottom:14px;font-size:clamp(28px,4vw,42px)}.portal-grid{grid-template-columns:repeat(2,1fr);gap:20px;margin-top:26px;display:grid}.portal-resource{border:1px solid color-mix(in srgb,var(--purple) 55%,transparent);background:linear-gradient(145deg,color-mix(in srgb,var(--purple) 15%,var(--panel)),var(--bg));border-radius:20px;padding:25px}.portal-resource h3{margin:8px 0 10px}.portal-resource p{color:var(--muted);min-height:52px}.portal-resource .resource-type{color:var(--blue);letter-spacing:.12em;font-size:12px;font-weight:900}.portal-resource a,.portal-resource button{margin-top:12px;display:inline-block}.portal-resource button:disabled{opacity:.65;cursor:not-allowed}.portal-classroom{text-align:center;max-width:720px;margin:0 auto}.portal-classroom .btn{margin:20px 0}.portal-zoom-details{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:20px;display:flex}.portal-zoom-details span{background:var(--bg);border:1px solid color-mix(in srgb,var(--blue) 45%,transparent);color:var(--muted);border-radius:12px;padding:12px 16px}.portal-zoom-details strong{color:var(--white)}.portal-empty{text-align:center;max-width:650px;margin:50px auto}.portal-empty h1{font-size:clamp(36px,5vw,58px)}.portal-empty .btn{margin-top:15px}.portal-footer{text-align:center;border-top:1px solid color-mix(in srgb,var(--white) 10%,transparent);color:var(--muted);padding:30px 20px;font-size:13px}.admin-summary{grid-template-columns:repeat(4,1fr);gap:18px;margin:30px 0;display:grid}.admin-stat{background:var(--panel);border:1px solid color-mix(in srgb,var(--white) 12%,transparent);border-radius:20px;padding:24px}.admin-stat span{color:var(--muted);font-size:14px;display:block}.admin-stat strong{color:var(--lime);margin-top:5px;font-size:38px;line-height:1.2;display:block}.admin-table-wrap{background:var(--panel);border:1px solid color-mix(in srgb,var(--white) 12%,transparent);border-radius:22px;overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;min-width:780px}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid color-mix(in srgb,var(--white) 9%,transparent);padding:17px 20px}.admin-table th{color:var(--blue);letter-spacing:.1em;text-transform:uppercase;font-size:12px}.admin-table td{color:var(--muted);font-size:14px}.admin-table td strong{color:var(--white)}.admin-badge{background:color-mix(in srgb,var(--purple) 20%,var(--panel));color:var(--white);border-radius:999px;padding:5px 10px;font-size:12px;font-weight:800;display:inline-block}.auth-page{place-items:center;padding:40px 22px;display:grid}.auth-page>.portal-logo{position:absolute;top:25px;left:30px}.auth-card{background:linear-gradient(150deg,color-mix(in srgb,var(--purple) 19%,var(--panel)),var(--panel));border:1px solid var(--purple);width:min(590px,100%);box-shadow:0 30px 90px color-mix(in srgb,var(--bg) 80%,transparent);border-radius:28px;padding:42px}.auth-card h1{margin:24px 0 18px;font-size:clamp(36px,6vw,54px)}.auth-card form{margin-top:28px}.auth-card label{color:var(--white);margin-bottom:9px;font-weight:800;display:block}.auth-card input{background:var(--bg);border:1px solid color-mix(in srgb,var(--white) 22%,transparent);width:100%;color:var(--white);font:inherit;border-radius:14px;outline:none;padding:15px 17px}.auth-card input:focus{border-color:var(--blue);box-shadow:0 0 0 3px color-mix(in srgb,var(--blue) 20%,transparent)}.auth-submit{cursor:pointer;border:0;width:100%;margin-top:16px;font-family:inherit}.auth-submit:disabled{opacity:.7;cursor:wait}.auth-note{color:var(--muted);margin:24px 0 0;font-size:12px;line-height:1.6}.portal-error{color:var(--lime);font-size:14px}.auth-success{text-align:center;padding:20px 0}.auth-success-icon{background:var(--lime);width:64px;height:64px;color:var(--bg);border-radius:50%;place-items:center;margin:0 auto 20px;font-size:34px;font-weight:900;display:grid}.auth-success h2{font-size:32px}.auth-success p{color:var(--muted);line-height:1.7}.portal-text-button{color:var(--blue);cursor:pointer;font:inherit;background:0 0;border:0;text-decoration:underline}.auth-page form+.portal-error{margin-bottom:0}@media (width<=760px){.portal-hero,.portal-grid{grid-template-columns:1fr}.portal-main{padding-top:42px}.admin-summary{grid-template-columns:1fr}.portal-header{align-items:flex-start}.portal-header nav{flex-wrap:wrap;justify-content:flex-end;gap:10px}.portal-header nav a:first-child{display:none}.auth-card{padding:28px}.portal-panel{padding:24px}}.portal-hero-luxe{isolation:isolate;border:1px solid color-mix(in srgb,var(--purple) 72%,var(--blue));background:linear-gradient(120deg,color-mix(in srgb,var(--panel) 96%,var(--purple)),color-mix(in srgb,var(--bg) 86%,var(--purple)) 58%,var(--panel));box-shadow:0 28px 90px color-mix(in srgb,var(--purple) 22%,transparent),inset 0 1px 0 color-mix(in srgb,var(--white) 14%,transparent);border-radius:32px;padding:clamp(28px,4vw,48px);animation:5s ease-in-out infinite portal-banner-glow;position:relative;overflow:hidden}.portal-hero-luxe:after{content:"";z-index:-1;background:linear-gradient(105deg,transparent 30%,color-mix(in srgb,var(--white) 8%,transparent) 47%,transparent 62%);pointer-events:none;animation:7s ease-in-out infinite portal-banner-shimmer;position:absolute;inset:0;transform:translate(-120%)}.portal-hero-content{z-index:2;position:relative}.portal-hero-aurora{z-index:-1;background:radial-gradient(circle,color-mix(in srgb,var(--blue) 28%,transparent),color-mix(in srgb,var(--purple) 18%,transparent) 38%,transparent 70%);filter:blur(10px);pointer-events:none;border-radius:50%;width:520px;height:520px;animation:8s ease-in-out infinite alternate portal-aurora-float;position:absolute;top:-260px;right:-150px}.portal-hero-kicker{border:1px solid color-mix(in srgb,var(--blue) 45%,transparent);background:color-mix(in srgb,var(--bg) 58%,transparent);color:var(--blue);letter-spacing:.16em;border-radius:999px;align-items:center;gap:10px;padding:9px 14px;font-size:11px;font-weight:900;display:inline-flex}.portal-live-dot{background:var(--lime);width:8px;height:8px;box-shadow:0 0 0 0 color-mix(in srgb,var(--lime) 45%,transparent);border-radius:50%;animation:2.2s ease-out infinite portal-dot-blink}.portal-spark{z-index:1;color:var(--lime);text-shadow:0 0 20px color-mix(in srgb,var(--lime) 65%,transparent);pointer-events:none;line-height:1;animation:2.8s ease-in-out infinite portal-spark-blink;position:absolute}.portal-spark-one{font-size:24px;top:26px;left:47%}.portal-spark-two{color:var(--blue);font-size:15px;animation-delay:.9s;bottom:32px;left:44%}.portal-spark-three{font-size:30px;animation-delay:1.6s;top:42%;right:24px}.portal-gift-status{border:1px solid color-mix(in srgb,var(--lime) 48%,transparent);background:linear-gradient(110deg,color-mix(in srgb,var(--lime) 11%,var(--panel)),color-mix(in srgb,var(--panel) 86%,transparent));box-shadow:inset 0 1px 0 color-mix(in srgb,var(--white) 10%,transparent);border-radius:16px;align-items:center;gap:14px;margin-top:12px;padding:14px 18px;display:inline-flex}.portal-gift-status-icon{background:var(--lime);width:38px;height:38px;color:var(--bg);border-radius:50%;flex:none;place-items:center;font-size:19px;animation:2.8s ease-in-out infinite portal-spark-blink;display:grid}.portal-gift-status strong,.portal-gift-status span{display:block}.portal-gift-status strong{color:var(--white);letter-spacing:-.01em;font-size:16px}.portal-gift-status div>span{color:var(--muted);margin-top:3px;font-size:13px}.portal-hero-luxe .portal-admission-card{z-index:2;border-color:color-mix(in srgb,var(--blue) 65%,var(--purple));box-shadow:0 24px 70px color-mix(in srgb,var(--bg) 70%,transparent),inset 0 1px 0 color-mix(in srgb,var(--white) 16%,transparent);position:relative;overflow:hidden}.portal-card-glint{background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--white) 12%,transparent),transparent);pointer-events:none;width:90px;height:180%;animation:6s ease-in-out infinite portal-card-glint;position:absolute;top:-40%;left:-45%;transform:rotate(20deg)}.portal-pass-footer{border-top:1px solid color-mix(in srgb,var(--white) 12%,transparent);color:var(--lime);letter-spacing:.13em;margin-top:22px;padding-top:16px;font-size:10px;font-weight:900}.portal-pass-footer span{margin-right:7px;animation:2.8s ease-in-out infinite portal-spark-blink;display:inline-block}.portal-resource-ready{border-color:color-mix(in srgb,var(--lime) 45%,var(--purple));background:linear-gradient(145deg,color-mix(in srgb,var(--lime) 8%,var(--panel)),var(--bg))}.portal-resource-ready .resource-type{color:var(--lime)}.portal-class-invite{border:1px solid color-mix(in srgb,var(--blue) 30%,transparent);background:color-mix(in srgb,var(--bg) 68%,var(--panel));border-radius:20px;justify-content:space-between;align-items:center;gap:24px;margin-top:22px;padding:24px;display:flex}.portal-class-invite h3{margin:8px 0}.portal-class-invite p{color:var(--muted);margin:0}.portal-class-invite .btn{flex:none;margin:0}@keyframes portal-spark-blink{0%,to{opacity:.35;transform:scale(.82)rotate(0)}50%{opacity:1;transform:scale(1.12)rotate(12deg)}}@keyframes portal-dot-blink{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--lime) 50%,transparent);opacity:1}70%{opacity:.55;box-shadow:0 0 0 8px #0000}to{opacity:1;box-shadow:0 0 #0000}}@keyframes portal-banner-shimmer{0%,35%{transform:translate(-120%)}70%,to{transform:translate(120%)}}@keyframes portal-banner-glow{0%,to{box-shadow:0 28px 90px color-mix(in srgb,var(--purple) 18%,transparent),inset 0 1px 0 color-mix(in srgb,var(--white) 12%,transparent)}50%{box-shadow:0 28px 100px color-mix(in srgb,var(--blue) 18%,transparent),inset 0 1px 0 color-mix(in srgb,var(--white) 18%,transparent)}}@keyframes portal-aurora-float{0%{opacity:.7;transform:translate(0)scale(1)}to{opacity:1;transform:translate(-45px,35px)scale(1.12)}}@keyframes portal-card-glint{0%,30%{left:-45%}65%,to{left:135%}}@media (width<=760px){.portal-hero-luxe{border-radius:24px;gap:26px;padding:26px 22px}.portal-hero-luxe h1{font-size:clamp(40px,12vw,58px)}.portal-spark-one{top:18px;left:auto;right:22px}.portal-spark-two,.portal-spark-three{display:none}.portal-gift-status{align-items:flex-start;width:100%;padding:13px 14px}.portal-class-invite{flex-direction:column;align-items:flex-start;padding:20px}.portal-class-invite .btn{text-align:center;width:100%}}@media (prefers-reduced-motion:reduce){.portal-hero-luxe,.portal-hero-luxe:after,.portal-hero-aurora,.portal-live-dot,.portal-spark,.portal-gift-status-icon,.portal-card-glint,.portal-pass-footer span{animation:none}}
