:root{--primary:#0071e3;--secondary:#86868b;--bg-gray:#f5f5f7;--text:#1d1d1f;--content-text:#1f1f21;--success:#34c759;--warning:#fc0;--error:#ff3b30;--question:#c83bc8;--glass:#ffffffb8;--select-color:#000;--selector-bg:#0000000a;--bg-gradient:#fffc;--bg-still:white;--warning-bg:#fff0f0;--box-color:#beeaff}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--primary:#0071e3;--secondary:#86868b;--bg-gray:#303030;--text:#babaca;--content-text:#1f1f21;--success:#34c759;--warning:#fc0;--error:#ff3b30;--question:#c83bc8;--glass:#303030b8;--select-color:#ddd;--selector-bg:#ffffff0a;--bg-gradient:#121212cc;--bg-still:#232323;--warning-bg:#5d1212;--box-color:#124760}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{background-color:var(--bg-gray);color:var(--text);height:100vh;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;transition:background-color .4s;overflow:hidden}body.gray-bg{background-color:var(--bg-gray)}body.green-bg{background-color:var(--success)}body.yellow-bg{background-color:var(--warning)}body.red-bg{background-color:var(--error)}body.purple-bg{background-color:var(--question)}.view{flex-direction:column;width:100%;height:100vh;display:flex;position:relative}#login-view{justify-content:center;align-items:center}.login-card{background:var(--bg-still);text-align:center;border-radius:20px;width:90%;max-width:380px;padding:2.5rem;box-shadow:0 10px 40px #0000001a}.login-card h1{margin-bottom:.5rem;font-size:28px}.subtitle{color:var(--secondary);margin-bottom:2rem;font-size:14px}.register-content{overflow-y:auto}.form-group{text-align:left;margin-bottom:1.5rem}.form{background-color:var(--bg-still);color:var(--text)}label{color:var(--secondary);margin-bottom:6px;font-size:13px;font-weight:600;display:block}input,select{border:1px solid #d2d2d7;border-radius:12px;outline:none;width:100%;padding:12px 16px;font-size:16px;transition:border-color .2s}input:focus,select:focus{border-color:var(--primary)}.icon-btn{cursor:pointer;color:var(--primary);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:8px;font-size:20px;transition:background-color .2s;display:flex}.v-stack{flex-direction:column;align-items:start;display:flex}.h-stack{flex-direction:row;justify-content:space-between;align-items:center;display:flex}.icon-btn:hover{background-color:#0000000d}.spinning{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.primary-btn{background-color:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:12px;flex:1;padding:16px;font-size:17px;font-weight:600;transition:opacity .2s,transform .1s}#forgot-password{color:var(--secondary);flex-direction:row-reverse;text-decoration:underline;display:flex}.darken-back{z-index:10000;background:#00000080;width:100%;height:100%;display:none;position:fixed;top:0;left:0}.popout-box{background:var(--bg-still);width:80%;height:30%;color:var(--text);border-radius:20px;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;top:40%;left:10%}.secondary-btn{background-color:var(--secondary);color:var(--select-color);cursor:pointer;border:none;border-radius:12px;flex:1;padding:16px;font-size:17px;font-weight:600;transition:opacity .2s,transform .1s}.primary-btn:active{opacity:.9;transform:scale(.98)}.primary-btn.success{background-color:var(--success)}.glass-header{background:var(--glass);-webkit-backdrop-filter:blur(20px);z-index:10;border-bottom:1px solid #0000000d;padding:15px 20px}.header-top{justify-content:space-between;align-items:center;margin-bottom:15px;display:flex}.connection-status{color:var(--secondary);align-items:center;gap:8px;font-size:13px;display:flex}.dot{border-radius:50%;width:8px;height:8px}.dot.connected{background-color:var(--success);box-shadow:0 0 5px var(--success)}.dot.disconnected{background-color:var(--error)}.battery-info{color:var(--secondary);align-items:center;gap:4px;font-size:13px;display:flex}.bus-selector-container{background:var(--selector-bg);border-radius:10px;align-items:center;gap:10px;padding:8px 12px;display:flex}#bus-select,#review-bus-select{color:var(--select-color)}.bus-selector-container label{white-space:nowrap;margin-bottom:0;font-size:12px}.bus-selector-container select{background:0 0;border:none;padding:4px 8px;font-weight:600}.content{flex:1;justify-content:center;align-items:flex-start;padding:20px;display:flex;overflow-y:auto}.empty-state{text-align:center;color:var(--secondary)}.rfid-icon{opacity:.5;margin-bottom:20px;font-size:60px}.student-card{text-align:center;border-radius:24px;width:100%;max-width:340px;padding:24px;overflow-y:auto}#photo-loading{align-items:center;margin:0}.photo-container{background:var(--secondary);border-radius:18px;justify-content:center;align-items:center;width:150px;height:200px;margin:0 auto 20px;display:flex;position:relative;overflow:hidden}.photo-container img{object-fit:cover;max-width:100%;max-height:100%}.student-details h2{margin:0 0 15px;font-size:28px}.detail-row{justify-content:space-between;margin-bottom:8px;font-size:16px;display:flex}.bus-badge{color:var(--primary);background:#0071e31a;border-radius:20px;margin-top:15px;padding:6px 14px;font-size:18px;font-weight:700;display:inline-block}#register-modal{overflow-y:auto}footer{background:linear-gradient(to top, var(--bg-gradient), transparent);padding:20px}.sync-btn{color:#fff;cursor:pointer;background:#ff9500;border:none;border-radius:16px;justify-content:center;align-items:center;gap:12px;width:100%;padding:18px;font-size:18px;font-weight:600;display:flex;box-shadow:0 4px 15px #ff95004d}.badge-count{color:#ff9500;background:#fff;border-radius:10px;padding:2px 8px;font-size:14px}.modal{z-index:100;background:#0006;align-items:flex-end;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg-still);border-radius:20px 20px 0 0;flex-direction:column;width:100%;max-height:85vh;padding:20px;display:flex}.modal-header{border-bottom:1px solid #eee;justify-content:space-between;align-items:center;gap:15px;padding-bottom:15px;display:flex}.review-bus-selector{flex:1;max-width:150px}.review-bus-selector select{background-color:var(--bg-gray);padding:6px 10px;font-size:14px}.text-btn{color:var(--primary);cursor:pointer;background:0 0;border:none;font-size:16px;font-weight:600}.review-list{flex:1;padding:10px 0;overflow-y:auto}.review-item{border-bottom:1px solid #f5f5f7;justify-content:space-between;align-items:center;padding:12px 5px;display:flex}.review-info h4{margin:0;font-size:17px}.review-info p{color:var(--secondary);margin:0;font-size:13px}.error-text{color:var(--error);margin-top:10px;font-size:14px}.pulse{animation:2s infinite pulse-animation}@keyframes pulse-animation{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.icon-btn{background:var(--selector-bg);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;transition:background-color .2s;display:flex}.badge{text-transform:uppercase;letter-spacing:.02em;border-radius:6px;padding:4px 8px;font-size:10px;font-weight:700}.badge-ready{color:#248a3d;background:#34c75926}.badge-wrong{color:#b28900;background:#ffcc0026}.badge-unknown{color:#cc2f26;background:#ff3b3026}.review-summary{background:var(--bg-gray);border-left:4px solid var(--primary);border-radius:12px;margin:10px 0;padding:14px;font-size:14px;font-weight:500;line-height:1.4}.loading-overlay{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:200;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-content{text-align:center;background:#fff;border-radius:20px;padding:30px 50px;box-shadow:0 10px 30px #0003}.spinner{border:4px solid #f3f3f3;border-top:4px solid var(--primary);border-radius:50%;width:40px;height:40px;margin:0 auto 15px;animation:1s linear infinite spin}.content-text{color:var(--content-text)}.material-symbols-outlined{-webkit-user-select:none;user-select:none;font-size:24px}.rfid-icon .material-symbols-outlined{opacity:.5;font-size:200px}#battery-symbol{color:var(--success)}
