:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f4f7;--card-bg:#fff;--border:#e5e7eb;--text:#111827;--muted:#6b7280;--accent:#2563eb;--accent-dark:#1d4ed8;--accent-soft:#eff4ff;--ok-bg:#dcfce7;--ok-text:#15803d;--no-data-bg:#f1f2f4;--no-data-text:#6b7280;--shadow-sm:0 1px 2px #1018280f;--shadow-md:0 4px 14px #10182814;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0}.app{max-width:1120px;margin:0 auto;padding:0 20px 60px}.app-header{align-items:center;gap:12px;padding:28px 0 24px;display:flex}.app-header .logo-dot{background:linear-gradient(135deg, var(--accent), #60a5fa);width:34px;height:34px;box-shadow:var(--shadow-sm);border-radius:10px;flex-shrink:0}.app-header h1{letter-spacing:-.01em;margin:0;font-size:1.3rem;font-weight:700}.app-header p{color:var(--muted);margin:2px 0 0;font-size:.85rem}.logout-button{border:1px solid var(--border);background:var(--card-bg);color:var(--muted);cursor:pointer;border-radius:8px;margin-left:auto;padding:8px 14px;font-family:inherit;font-size:.85rem;font-weight:500;transition:background-color .15s,color .15s}.logout-button:hover{background:var(--accent-soft);color:var(--text)}.auth-wrap{justify-content:center;align-items:center;min-height:calc(100vh - 100px);display:flex}.auth-card{background:var(--card-bg);border:1px solid var(--border);width:100%;max-width:340px;box-shadow:var(--shadow-md);border-radius:12px;flex-direction:column;gap:14px;padding:28px 26px;display:flex}.auth-card h2{letter-spacing:-.01em;margin:0;font-size:1.15rem}.auth-card>p.muted{margin:-8px 0 4px;font-size:.85rem}.auth-label{color:var(--muted);flex-direction:column;gap:6px;font-size:.85rem;font-weight:500;display:flex}.auth-label input{border:1px solid var(--border);color:var(--text);background:var(--card-bg);border-radius:8px;padding:9px 12px;font-family:inherit;font-size:.95rem;transition:border-color .15s,box-shadow .15s}.auth-label input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.auth-submit{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;margin-top:4px;padding:10px 16px;font-family:inherit;font-size:.95rem;font-weight:600;transition:background-color .15s}.auth-submit:hover{background:var(--accent-dark)}.auth-submit:disabled{cursor:default;background:#a5b4fc}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-dark);text-decoration:underline}.back-link{align-items:center;gap:4px;margin-bottom:16px;font-size:.88rem;font-weight:500;display:inline-flex}.muted{color:var(--muted)}.state-message{color:var(--muted);align-items:center;gap:10px;padding:40px 0;font-size:.95rem;display:flex}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error{color:#b91c1c}.toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.toolbar input{border:1px solid var(--border);background:var(--card-bg);border-radius:8px;flex:1;max-width:320px;padding:9px 14px;font-family:inherit;font-size:.92rem;transition:border-color .15s,box-shadow .15s}.toolbar input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.toolbar .muted{white-space:nowrap;font-size:.85rem}.add-school-form{gap:10px;margin-bottom:10px;display:flex}.add-school-form input{border:1px solid var(--border);background:var(--card-bg);border-radius:8px;flex:1;max-width:320px;padding:9px 14px;font-family:inherit;font-size:.92rem;transition:border-color .15s,box-shadow .15s}.add-school-form input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.add-school-form button{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:9px 16px;font-family:inherit;font-size:.88rem;font-weight:600;transition:background-color .15s}.add-school-form button:hover:not(:disabled){background:var(--accent-dark)}.add-school-form button:disabled{cursor:default;background:#a5b4fc}.add-school-error{margin:-4px 0 12px;font-size:.85rem}.actions-cell{text-align:right;white-space:nowrap}.delete-link{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 6px;font-family:inherit;font-size:.85rem;transition:color .15s,background-color .15s}.delete-link:hover:not(:disabled){color:#b91c1c;background:#fef2f2}.delete-link:disabled{cursor:default;opacity:.6}.card-panel{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:12px;overflow:hidden}.schools-table{border-collapse:collapse;background:var(--card-bg);border:1px solid var(--border);width:100%;box-shadow:var(--shadow-sm);border-radius:12px;overflow:hidden}.schools-table th,.schools-table td{text-align:left;border-bottom:1px solid var(--border);padding:13px 18px;font-size:.92rem}.schools-table th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;background:#fafafc;font-size:.74rem;font-weight:600}.schools-table tbody tr{transition:background-color .12s}.schools-table tbody tr:hover{background:var(--accent-soft)}.schools-table tbody tr:last-child td{border-bottom:none}.schools-table td a{color:var(--text);font-weight:600}.schools-table td a:hover{color:var(--accent);text-decoration:none}.status-badge{border-radius:999px;align-items:center;gap:5px;padding:4px 11px;font-size:.76rem;font-weight:600;display:inline-flex}.status-badge:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.status-ok{background:var(--ok-bg);color:var(--ok-text)}.status-no_data{background:var(--no-data-bg);color:var(--no-data-text)}h2{letter-spacing:-.01em;margin-bottom:2px;font-size:1.4rem}.school-title-row{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.school-title-row h2{margin:0}.edit-name-button{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:2px 0;font-family:inherit;font-size:.82rem;font-weight:500}.edit-name-button:hover{color:var(--accent-dark);text-decoration:underline}.name-edit-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:2px;display:flex}.name-edit-row input{border:1px solid var(--border);min-width:240px;color:var(--text);background:var(--card-bg);border-radius:8px;flex:1;padding:8px 12px;font-family:inherit;font-size:1rem}.name-edit-row input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.name-edit-row .auth-submit,.name-edit-row .logout-button{white-space:nowrap;margin:0}.stats-row{flex-wrap:wrap;gap:12px;margin:20px 0;display:flex}.stat-card{background:var(--card-bg);border:1px solid var(--border);min-width:150px;box-shadow:var(--shadow-sm);border-radius:12px;flex-direction:column;flex:1;gap:6px;padding:14px 18px;display:flex}.stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;font-weight:600}.stat-value{letter-spacing:-.01em;font-size:1.2rem;font-weight:700}.stats-note{margin:-8px 0 20px;font-size:.85rem}.period-switch{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:8px;padding:3px;display:inline-flex}.period-switch button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:7px 16px;font-family:inherit;font-size:.88rem;font-weight:500;transition:background-color .15s,color .15s}.period-switch button:hover{color:var(--text)}.period-switch button.active{background:var(--accent);color:#fff}.pagination{justify-content:center;align-items:center;gap:16px;margin-top:16px;display:flex}.pagination button{border:1px solid var(--border);background:var(--card-bg);color:var(--text);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:8px;padding:7px 14px;font-family:inherit;font-size:.88rem;font-weight:500;transition:background-color .15s,color .15s}.pagination button:hover:not(:disabled){background:var(--accent-soft);color:var(--accent-dark)}.pagination button:disabled{color:var(--muted);cursor:default;opacity:.5}.pagination .muted{white-space:nowrap;font-size:.85rem}.download-page{flex-direction:column;gap:20px;max-width:640px;margin:0 auto;display:flex}.download-hero{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow-md);text-align:center;border-radius:12px;padding:32px 28px}.download-hero h2{margin:0 0 10px;font-size:1.5rem}.download-hero p{max-width:460px;margin:0 auto 22px;font-size:.95rem;line-height:1.5}.download-button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:13px 28px;font-family:inherit;font-size:1rem;font-weight:700;transition:background-color .15s;display:inline-block}.download-button:hover{background:var(--accent-dark);color:#fff;text-decoration:none}.download-steps,.download-note{padding:26px 28px}.download-note h3{margin:0 0 8px;font-size:1.05rem}.install-heading{margin:0 0 22px}.install-steps-list{flex-direction:column;gap:26px;margin:0;padding:0;list-style:none;display:flex}.install-step{gap:16px;display:flex}.install-step-number{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:.9rem;font-weight:700;display:flex}.install-step-body{flex:1;min-width:0}.install-step-body h3{margin:3px 0 8px;font-size:1rem}.install-step-body p{margin:0 0 8px;font-size:.92rem;line-height:1.55}.install-step-body p:last-child{margin-bottom:0}.install-step-body code,.download-note code{background:var(--accent-soft);color:var(--accent-dark);border-radius:5px;padding:1px 6px;font-size:.88em}.install-step-images{flex-wrap:wrap;gap:14px;margin-top:12px;display:flex}.install-step-images figure{max-width:320px;margin:0}.install-step-images img{border:1px solid var(--border);max-width:100%;box-shadow:var(--shadow-sm);border-radius:10px;display:block}.install-step-images figcaption{color:var(--muted);text-align:center;margin-top:6px;font-size:.78rem}.download-note p{margin:0;font-size:.9rem;line-height:1.55}.chart-wrap{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:12px;padding:20px 16px 8px}
