1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Parent Portal</title> 7 <link rel="preconnect" href="https://fonts.googleapis.com"> 8 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 9 <link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400;1,600;1,700&family=Fraunces:opsz,[email protected],700;9..144,900&display=swap" rel="stylesheet"> 10 <link rel="stylesheet" href="css/styles.css"> 11 <!-- Firebase SDK --> 12
12<script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-app-compat.js"></script>
12 13
13<script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-app-check-compat.js"></script>
13 14
14<script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-auth-compat.js"></script>
14 15
15<script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-database-compat.js"></script>
15 16
16<script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-analytics-compat.js"></script>
16 17 18 <!-- Favicon and App Icons --> 19 <link rel="apple-touch-icon" sizes="180x180" href="icons/apple-touch-icon.png"> 20 <link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png"> 21 <link rel="icon" type="image/png" sizes="16x16" href="icons/favicon-16x16.png"> 22 <link rel="icon" type="image/x-icon" href="icons/favicon.ico"> 23 <!-- Safari pinned tab (mask-icon): SVG preferred, fallback to PNG if needed --> 24 <link rel="mask-icon" href="icons/logo.png" color="#5bbad5"> 25 <meta name="msapplication-TileColor" content="#2b5797"> 26 <meta name="theme-color" content="#ffffff"> 27</head> 28<body> 29 <!-- Global Topbar (persistent across the whole site) --> 30 <header class="topbar" id="globalTopbar"> 31 <div class="topbar-left"> 32 <button type="button" class="brand" id="globalBrandBtn" aria-label="Home"> 33 <div class="brand-logo"> 34 <img src="icons/ptc-logo.webp" alt="LISA Logo"> 35 </div> 36 </button> 37 </div> 38 <div class="topbar-right"> 39 <div class="social-icons-group"> 40 <a href="https://www.facebook.com/LISAAcademy/" class="nav-icon-btn" aria-label="Facebook" target="_blank" rel="noopener"> 41 <svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"/></svg> 42 </a> 43 <a href="https://www.instagram.com/lisaacademyschools/?hl=en" class="nav-icon-btn" aria-label="Instagram" target="_blank" rel="noopener"> 44 <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><rect x="2" y="2" width="20" height="20" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.5" cy="6.5" r="1.5" fill="currentColor" stroke="none"/></svg> 45 </a> 46 <a href="https://lisaacademy.org" class="nav-icon-btn" aria-label="Website" target="_blank" rel="noopener"> 47 <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg> 48 </a> 49 </div> 50 <div class="lang-switch"> 51 <button type="button" class="lang-btn active">EN</button> 52 <span class="lang-divider">|</span> 53 <button type="button" class="lang-btn">ES</button> 54 </div> 55 <div class="topbar-user-info" id="topbarUserInfo" style="display: none;"> 56 <span class="user-avatar" id="userAvatar">--</span> 57 <span class="user-text"> 58 <span class="user-label">Parent</span> 59 <span class="user-name" id="userEmail"></span> 60 </span> 61 <button type="button" id="logoutBtn">Logout</button> 62 </div> 63 </div> 64 </header> 65 66 <!-- Login Section --> 67 <div id="loginSection" class="section login-section"> 68 <div class="login-card"> 69 <div class="login-layout"> 70 71 <!-- Left: sign in / sign up form --> 72 <div class="login-left"> 73 <form id="loginForm" class="auth-form"> 74 <div class="auth-head"> 75 <span class="auth-eyebrow">Parent Portal</span> 76 <h1 class="auth-title"><span class="hl">Sign in</span></h1> 77 <p class="muted">Sign in to view your child's discipline points and schedule conferences.</p> 78 </div> 79 <div class="sf-cell"> 80 <label for="email">Email address</label> 81 <input type="email" id="email" placeholder="[email protected]" autocomplete="email" required> 82 </div> 83 <div class="sf-cell"> 84 <div class="sf-label-row"> 85 <label for="password">Password</label> 86 <a href="#" id="forgotPasswordLink" class="forgot-password-link">Forgot password?</a> 87 </div> 88 <input type="password" id="password" placeholder="â¢â¢â¢â¢â¢â¢â¢â¢" autocomplete="current-password" required> 89 </div> 90 <button type="submit" class="auth-cta"><span class="hl">Continue →</span></button> 91 <p class="auth-switch">Don't have an account? <a href="#" id="showSignup">Sign up</a></p> 92 </form> 93 94 <!-- Signup Form (hidden by default) --> 95 <form id="signupForm" class="auth-form" style="display: none;"> 96 <div class="auth-head">
97 <span class="auth-eyebrow">Parent Portal</span> 98 <h1 class="auth-title"><span class="hl">Sign up</span></h1> 99 <p class="muted">Create an account to access your child's dashboard.</p> 100 </div> 101 <div class="sf-cell"> 102 <label for="signupEmail">Email address</label> 103 <input type="email" id="signupEmail" placeholder="[email protected]" autocomplete="email" required> 104 </div> 105 <div class="sf-cell"> 106 <label for="signupPassword">Password</label> 107 <input type="password" id="signupPassword" placeholder="Create a password" autocomplete="new-password" required> 108 </div> 109 <button type="submit" class="auth-cta"><span class="hl">Continue →</span></button> 110 <p class="auth-switch">Already have an account? <a href="#" id="showLogin">Login</a></p> 111 </form> 112 113 <div id="errorMessage" class="error-message"></div> 114 </div> 115 116 <!-- Right: how to sign up --> 117 <div class="login-right"> 118 <div class="auth-info-panel"> 119 <span class="auth-info-eyebrow">How to sign up</span> 120 <h2 class="auth-info-title">Get set up<br>in <em>minutes</em></h2> 121 <ul class="auth-steps"> 122 <li class="auth-step"> 123 <span class="as-num">01</span> 124 <div> 125 <strong>Create your account</strong> 126 <p>Sign up with your email address and a password.</p> 127 </div> 128 </li> 129 <li class="auth-step"> 130 <span class="as-num">02</span> 131 <div> 132 <strong>Verify your email</strong> 133 <p>Click the confirmation link we send to your inbox.</p> 134 </div> 135 </li> 136 <li class="auth-step"> 137 <span class="as-num">03</span> 138 <div> 139 <strong>Sign in</strong> 140 <p>Log back in with your verified email and password.</p> 141 </div> 142 </li> 143 <li class="auth-step"> 144 <span class="as-num">04</span> 145 <div> 146 <strong>You're in</strong> 147 <p>View discipline points and schedule parent-teacher conferences.</p> 148 </div> 149 </li> 150 </ul> 151 </div> 152 </div> 153 154 </div> 155 </div> 156 </div> 157 158 <!-- Home Section --> 159 <div id="homeSection" class="section" style="display: none;"> 160 <main> 161 <div class="home-container"> 162 <div class="home-intro"> 163 <h2>Welcome back</h2> 164 <p class="home-intro-sub">Choose where you'd like to go.</p> 165 </div> 166 <div class="home-grid"> 167 <button type="button" class="home-box" id="homeDpsBox"> 168 <span class="home-box-icon"> 169 <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="5" y="4" width="14" height="17" rx="2.2" stroke="currentColor" stroke-width="1.6"/><path d="M9 4V3.5C9 2.67157 9.67157 2 10.5 2H13.5C14.3284 2 15 2.67157 15 3.5V4" stroke="currentColor" stroke-width="1.6"/><path d="M8.3 12.3L10.3 14.3L15.7 8.9" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg> 170 </span> 171 <div class="home-box-title">Discipline Points</div> 172 <div class="home-box-sub">Behavior records & point totals</div> 173 </button>
174 <a class="home-box" id="homePtcBox" href="conference.html" style="display: none;"> 175 <span class="home-box-icon"> 176 <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3.5" y="5" width="17" height="15" rx="2.2" stroke="currentColor" stroke-width="1.6"/><path d="M3.5 9.5H20.5" stroke="currentColor" stroke-width="1.6"/><path d="M8 3V6.5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/><path d="M16 3V6.5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/><path d="M8.3 14L10.3 16L15.3 11.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg> 177 </span> 178 <div class="home-box-title">Parent-Teacher Conference</div> 179 <div class="home-box-sub">Schedule time with your child's teacher</div> 180 </a> 181 </div> 182 </div> 183 </main> 184 </div> 185 186 <!-- Discipline Points Section --> 187 <div id="dpsSection" class="section" style="display: none;"> 188 <main> 189 <div class="dashboard-container"> 190 <div class="dps-header"> 191 <span class="eyebrow">Behavior Overview</span> 192 <h2 class="page-heading">Discipline Points</h2> 193 </div> 194 195 <div class="dps-controls"> 196 <div class="student-dropdown" id="studentDropdown"> 197 <button type="button" class="sd-trigger" id="sdTrigger" aria-haspopup="listbox" aria-expanded="false"> 198 <span class="sd-avatar" id="sdAvatar">--</span> 199 <span class="sd-text"> 200 <span class="sd-label">Student</span> 201 <span class="sd-value" id="sdValue">Select studentâ¦</span> 202 </span> 203 <svg class="sd-chevron" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg> 204 </button> 205 <div class="sd-panel" id="sdPanel" hidden role="listbox" aria-label="Select a student"></div> 206 </div> 207 208 <div class="student-dps-tile" id="studentDpsTile"> 209 <span class="dps-tile-icon"> 210 <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="1.6"/><path d="M8.3 12.3L10.3 14.3L15.7 8.9" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg> 211 </span> 212 <div class="dps-tile-text"> 213 <span id="studentTotalDPS">0</span> 214 <label>Total DPS</label> 215 </div> 216 </div> 217 </div> 218 219 <!-- Events Table Section --> 220 <section class="events-section"> 221 <div class="table-container"> 222 <table id="eventsTable"> 223 <thead> 224 <tr> 225 <th>Date</th> 226 <th>Educator</th> 227 <th>Behavior</th> 228 <th>Points</th> 229 <th>Consequences</th> 230 </tr> 231 </thead> 232 <tbody id="eventsTableBody"></tbody> 233 </table> 234 </div> 235 </section> 236 </div> 237 </main> 238 </div> 239 240 <!-- Loading indicator --> 241 <div id="loadingIndicator" class="loading" style="display: none;"> 242 <div class="spinner"></div> 243 <p>Loading...</p> 244 </div> 245 246
246<script src="js/firebase-config.js"></script>
246 247
247<script src="js/auth.js"></script>
247 248
248<script src="js/dashboard.js"></script>
248 249
249<script src="js/app.js"></script>
249 250</body> 251</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.