@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}:root{--bg: #0f172a;--card: #1e293b;--card-light: #334155;--primary: #6366f1;--primary-hover: #4f46e5;--primary-glow: rgba(99, 102, 241, .3);--success: #10b981;--danger: #ef4444;--warning: #f59e0b;--text-main: #f8fafc;--text-dim: #94a3b8;--glass: rgba(255, 255, 255, .03);--glass-bg: rgba(30, 41, 59, .7);--glass-border: rgba(255, 255, 255, .08)}*{box-sizing:border-box;font-family:Inter,sans-serif}body{background:var(--bg);color:var(--text-main);margin:0;min-height:100vh;display:flex;justify-content:center;overflow-x:hidden}@keyframes slideUpFade{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes toastIn{0%{transform:translate(100%) scale(.9);opacity:0}to{transform:translate(0) scale(1);opacity:1}}@keyframes stroke{to{stroke-dashoffset:0}}@keyframes scale{0%,to{transform:none}50%{transform:scale3d(1.1,1.1,1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.app-container{width:100%;display:flex;justify-content:center;align-items:center;padding:20px}.dashboard-wrapper{padding:2rem;width:100%;max-width:1400px;animation:slideUpFade .6s cubic-bezier(.16,1,.3,1)}.pin-card,.welcome-card,.admin-card{background:var(--glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:2.5rem;border-radius:2rem;box-shadow:0 25px 50px -12px #00000080;border:1px solid var(--glass-border)}.pin-card{text-align:center;width:100%;max-width:450px}.admin-card{width:100%;position:relative}.brand-title{font-weight:800;letter-spacing:-1px;background:linear-gradient(to right,#818cf8,#c084fc);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:.5rem}.pin-dots{display:flex;justify-content:center;gap:1rem;margin:2rem 0}.dot-box{width:50px;height:65px;background:#0f172a;border:2px solid #334155;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;transition:.3s cubic-bezier(.4,0,.2,1)}.dot-box.filled{border-color:var(--primary);color:var(--primary);transform:scale(1.1);box-shadow:0 0 15px var(--primary-glow)}.modern-keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;max-width:280px;margin:0 auto}.key-btn{height:70px;border-radius:16px;border:1px solid var(--glass-border);background:var(--card-light);color:#fff;font-size:1.4rem;font-weight:600;cursor:pointer;transition:.2s}.key-btn:hover{background:#475569;transform:translateY(-2px)}.key-btn:active{transform:scale(.92);background:var(--primary)}.key-btn.danger{color:var(--danger)}.destination-selection h3{margin-bottom:20px;color:var(--text-main)}.scroll-area{padding-right:10px}.destination-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:30px}.big-btn{padding:1.2rem;border-radius:15px;border:1px solid var(--glass-border);background:var(--card-light);color:#fff;font-weight:700;cursor:pointer;transition:all .3s ease;font-size:1rem}.big-btn:hover{background:var(--primary);transform:translateY(-5px);box-shadow:0 10px 20px var(--primary-glow)}.teacher-btn{background:#312e81;border-color:#4338ca}.btn-in{background:var(--success);color:#fff}.btn-out{background:var(--danger);color:#fff}.auto-approve-style{border-left:5px solid var(--success)!important;background:linear-gradient(90deg,rgba(16,185,129,.1) 0%,var(--card-light) 100%)}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.admin-subtitle{color:var(--text-dim);margin-top:-5px;font-size:.9rem}.dashboard-grid{display:grid;grid-template-columns:1fr 1.8fr;gap:2rem;margin-top:2rem}.table-container{background:#0f172a66;padding:1.5rem;border-radius:1.5rem;border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.table-header-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.table-scroll{max-height:500px;overflow-y:auto;overflow-x:hidden;padding-right:5px}.table-scroll::-webkit-scrollbar{width:6px}.table-scroll::-webkit-scrollbar-thumb{background:var(--card-light);border-radius:10px}table{width:100%;border-collapse:collapse}th{text-align:left;color:var(--text-dim);padding:12px;font-size:.7rem;text-transform:uppercase;letter-spacing:1px}td{padding:1rem 12px;border-top:1px solid #334155;font-size:.9rem;transition:background .2s}tr:hover td{background:#ffffff05}.status-pill{padding:4px 10px;border-radius:6px;font-size:.7rem;font-weight:800}.status-pill.active{background:#6366f133;color:#818cf8}.status-pill.completed{background:#94a3b81a;color:var(--text-dim)}.row-warning{background:#f59e0b0d!important}.conflict-tag{color:var(--warning);font-size:.7rem;font-weight:700;margin-top:4px;animation:pulse 2s infinite}.admin-tools-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.schedule-row,.facility-row{display:flex;gap:15px;margin-bottom:12px;padding:12px;background:#0f172a80;border-radius:12px;border:1px solid transparent;transition:.2s;align-items:center}.schedule-row:hover,.facility-row:hover{background:#0f172acc;border-color:var(--glass-border);transform:translate(4px)}.loc-tag{background:var(--card-light);padding:6px 12px;border-radius:50px;display:inline-flex;align-items:center;gap:8px;font-size:.8rem;margin:4px;border:1px solid var(--glass-border)}.loc-tag button{background:none;border:none;color:var(--danger);cursor:pointer;font-weight:800}.pill-input,.pill-search{background:#0f172a;border:1px solid #334155;color:#fff;padding:10px 18px;border-radius:12px;outline:none;transition:.2s}.pill-input:focus{border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-glow)}.pill-btn{background:transparent;border:none;color:var(--text-dim);padding:8px 18px;border-radius:100px;cursor:pointer;font-weight:600;transition:.2s}.pill-btn.active{background:var(--primary);color:#fff;box-shadow:0 4px 12px var(--primary-glow)}.toast-container{position:fixed;bottom:30px;right:30px;z-index:9999;pointer-events:none}.success-toast{background:var(--success);color:#fff;padding:16px 28px;border-radius:16px;display:flex;align-items:center;gap:12px;font-weight:700;box-shadow:0 10px 25px #10b9814d;animation:toastIn .4s cubic-bezier(.175,.885,.32,1.275) forwards}.checkmark{width:24px;height:24px;border-radius:50%;display:block;stroke-width:4;stroke:#fff}.checkmark__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:4;fill:none;animation:stroke .6s forwards}.checkmark__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:stroke .3s forwards .8s}.top-right{position:absolute;top:20px;right:20px}.bold-text{font-weight:600}.dim-text{color:var(--text-dim)}.success-text{color:var(--success)}.danger-text{color:var(--danger)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:var(--card);border-radius:16px;padding:2rem;max-width:550px;width:90%;position:relative;box-shadow:0 20px 60px #00000080;animation:slideUpModal .3s cubic-bezier(.16,1,.3,1);max-height:80vh;display:flex;flex-direction:column}@keyframes slideUpModal{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-close{position:absolute;top:1rem;right:1rem;background:none;border:none;color:var(--text-dim);font-size:1.5rem;cursor:pointer;padding:4px 8px;border-radius:6px;transition:background .2s,color .2s}.modal-close:hover{background:var(--card-light);color:var(--text-main)}.modal-content h3{margin-bottom:1.5rem;color:var(--text-main);font-size:1.3rem;padding-right:40px}.student-pass-list{list-style:none;padding:0;margin:0 0 1.5rem;max-height:300px;overflow-y:auto;flex-shrink:0}.student-pass-list li{padding:.75rem .5rem;border-bottom:1px solid #334155;font-size:.85rem;color:var(--text-dim);display:flex;justify-content:space-between;align-items:center}.student-pass-list li:last-child{border-bottom:none}.pass-status{font-size:.7rem;padding:2px 8px;border-radius:4px;font-weight:600;text-transform:uppercase}.pass-status.active{background:#6366f133;color:#818cf8}.pass-status.arrived{background:#05966933;color:#10b981}.pass-status.completed{background:#94a3b833;color:var(--text-dim)}.pass-status.conflict{background:#f59e0b33;color:var(--warning)}.modal-sort-controls{display:flex;gap:.5rem;flex-wrap:wrap;padding-top:10px;border-top:1px solid var(--glass-border)}.modal-sort-controls button{padding:.4rem .8rem;background:var(--card-light);border:1px solid var(--glass-border);border-radius:8px;color:var(--text-dim);font-size:.75rem;cursor:pointer;transition:background .2s,color .2s,border-color .2s;white-space:nowrap}.modal-sort-controls button:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.modal-sort-controls button.active-sort{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 2px 8px var(--primary-glow)}.modal-empty{text-align:center;padding:2rem 1rem;color:var(--text-dim);font-size:.9rem}.student-pass-table{width:100%;border-collapse:collapse}.student-pass-table th{text-align:left;color:var(--text-dim);padding:10px 12px;font-size:.7rem;text-transform:uppercase;letter-spacing:1px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .2s}.student-pass-table th:hover{color:var(--primary)}.student-pass-table td{padding:10px 12px;border-top:1px solid #334155;font-size:.85rem}.student-pass-table tr:hover td{background:#ffffff05}.small-btn{padding:6px 12px;border-radius:6px;border:1px solid var(--glass-border);background:var(--card-light);color:var(--text-main);cursor:pointer;font-size:.8rem;transition:all .2s}.small-btn:hover{background:var(--primary);border-color:var(--primary)}.presence-indicator{color:var(--success);margin-left:4px;animation:pulse-green 2s infinite}.news-modal{max-width:600px;width:90%;animation:slideUpFade .3s ease-out}.schedule-row,.facility-row{background:#0f172a99!important;border:1px solid rgba(255,255,255,.05);border-radius:12px;padding:15px;margin-bottom:12px;display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:15px;align-items:center;transition:all .2s ease}.schedule-row:hover,.facility-row:hover{border-color:var(--primary);background:#0f172ae6!important;transform:translate(5px)}.schedule-row input,.facility-row input,.admin-section input{background:#0f172a!important;color:#fff!important;border:1px solid #334155;border-radius:8px;padding:8px 12px;font-size:.9rem;outline:none;width:100%;transition:border-color .2s}.schedule-row input:focus,.facility-row input:focus{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-glow)}.input-group label{display:block;font-size:.75rem;color:var(--text-dim);margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}.delete-btn{background:#ef44441a;color:var(--danger);border:1px solid rgba(239,68,68,.2);width:32px;height:32px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.delete-btn:hover{background:var(--danger);color:#fff}.admin-tabs{display:flex;gap:10px;margin-bottom:5px;padding:5px;background:#0f172a66;border-radius:14px;width:fit-content}.tab-btn{background:transparent;border:none;color:var(--text-dim);padding:10px 20px;border-radius:10px;cursor:pointer;font-weight:600;font-size:.9rem;transition:all .2s ease}.tab-btn:hover{color:#fff;background:#ffffff0d}.tab-btn.active{background:var(--primary);color:#fff;box-shadow:0 4px 15px var(--primary-glow)}.tab-divider{border:0;height:1px;background:linear-gradient(to right,var(--glass-border),transparent);margin:20px 0}.tab-pane{animation:slideInRight .3s ease-out}@keyframes slideInRight{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}tr.completed-row{opacity:.6;background:#ffffff05}.status-pill.completed{background:#475569}.status-pill.arrived{background:#059669;animation:pulse-green 2s infinite}@keyframes pulse-green{0%{box-shadow:0 0 #05966966}70%{box-shadow:0 0 0 6px #05966900}to{box-shadow:0 0 #05966900}}.hotspot-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:25px;padding:20px;background:#0f172a66;border-radius:16px;border:1px solid var(--glass-border)}.filter-group{display:flex;flex-direction:column;gap:8px}.filter-label{font-size:.75rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;font-weight:600}.filter-buttons{display:flex;gap:8px;flex-wrap:wrap}.hotspot-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px;margin-bottom:25px}.summary-card{background:#0f172a99;border:1px solid var(--glass-border);border-radius:12px;padding:20px;text-align:center;transition:all .3s ease}.summary-card:hover{transform:translateY(-3px);border-color:var(--primary);box-shadow:0 8px 20px var(--primary-glow)}.summary-value{font-size:1.8rem;font-weight:800;color:var(--primary);margin-bottom:5px}.summary-label{font-size:.8rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.hotspot-list{display:flex;flex-direction:column;gap:12px;margin-bottom:30px}.hotspot-row{display:grid;grid-template-columns:60px 2fr 3fr auto;gap:15px;align-items:center;padding:16px;background:#0f172a80;border-radius:12px;border:1px solid transparent;transition:all .2s ease}.hotspot-row:hover{background:#0f172acc;border-color:var(--glass-border);transform:translate(4px)}.hotspot-rank{display:flex;justify-content:center;align-items:center}.rank-number{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--primary),#818cf8);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.1rem;box-shadow:0 4px 12px var(--primary-glow)}.hotspot-info{display:flex;flex-direction:column;gap:4px}.hotspot-name{font-size:1.1rem;font-weight:700;color:var(--text-main)}.hotspot-count{font-size:.85rem;color:var(--text-dim)}.block-breakdown{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.breakdown-tag{background:#6366f126;color:#818cf8;padding:3px 10px;border-radius:20px;font-size:.7rem;font-weight:600;border:1px solid rgba(99,102,241,.3)}.hotspot-bar-container{height:8px;background:#ffffff0d;border-radius:10px;overflow:hidden}.hotspot-bar{height:100%;background:linear-gradient(90deg,#fbbf24,#f59e0b);border-radius:10px;transition:width .5s ease-out;box-shadow:0 0 10px #fbbf2466}.hotspot-delete{opacity:.6;transition:all .2s}.hotspot-delete:hover{opacity:1;transform:scale(1.1)}.hotspot-details-section{margin-top:30px;padding-top:20px;border-top:1px solid var(--glass-border)}.hotspot-details-section h3{margin-bottom:15px;color:var(--text-main);font-size:1.2rem}.hotspot-details-table{width:100%}.hotspot-details-table th{padding:12px 8px;font-size:.7rem}.hotspot-details-table td{padding:12px 8px;text-align:center}.hotspot-details-table .bold-text{text-align:left!important}.number-cell{font-variant-numeric:tabular-nums;color:var(--text-dim)}.small-icon-btn{width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;font-size:.9rem}.empty-state{text-align:center;padding:60px 20px;background:#0f172a4d;border-radius:12px;border:1px dashed var(--glass-border)}.empty-state p{margin:0;font-size:1rem}@media(max-width:768px){.hotspot-row{grid-template-columns:50px 1fr;gap:10px}.hotspot-bar-container{grid-column:1 / -1}.hotspot-delete{grid-column:2;justify-self:end}.hotspot-filters{grid-template-columns:1fr}.hotspot-summary{grid-template-columns:repeat(2,1fr)}}.hotspot-tabs{display:flex;gap:10px;margin-bottom:20px;padding:4px;background:#0f172a66;border-radius:14px;width:fit-content}.hotspot-content{animation:slideInRight .3s ease-out}.hotspot-add-section{margin-bottom:25px;padding:20px;background:#0f172a66;border-radius:16px;border:1px solid var(--glass-border)}.hotspot-add-section h3{margin-bottom:15px;color:var(--text-main);font-size:1rem}.add-location-form{display:flex;gap:10px;align-items:stretch}.add-location-form .pill-input{flex:1;min-width:200px}.hotspot-list-section{margin-bottom:25px}.hotspot-list-section h3{margin-bottom:15px;color:var(--text-main);font-size:1rem}.location-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:20px}.location-card{display:flex;flex-direction:column;justify-content:space-between;padding:16px;background:#0f172a80;border-radius:12px;border:1px solid var(--glass-border);transition:all .2s ease;cursor:default}.location-card:hover{background:#0f172ab3;border-color:var(--primary);transform:translateY(-2px)}.location-card.allowed{border-color:var(--success);background:#10b9810d}.location-card.selected{border-color:var(--warning);background:#f59e0b0d;cursor:pointer}.location-card.selected:hover{background:#f59e0b1a}.location-info{display:flex;flex-direction:column;gap:8px}.location-name{font-size:.95rem;font-weight:600;color:var(--text-main)}.allowed-badge,.selected-badge{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:20px;display:inline-block;width:fit-content}.allowed-badge{background:#10b98126;color:var(--success)}.selected-badge{background:#f59e0b26;color:var(--warning)}.toggle-indicator{text-align:right;font-size:1.2rem;color:var(--text-dim)}.hotspot-actions{display:flex;justify-content:center;margin-top:20px;padding-top:20px;border-top:1px solid var(--glass-border)}.hotspot-info-section{margin-top:25px;padding:20px;background:#0f172a4d;border-radius:16px;border:1px dashed var(--glass-border)}.hotspot-info-section h3{margin-bottom:12px;color:var(--text-main);font-size:1rem}.info-content ul{list-style:none;padding:0;margin:0}.info-content li{padding:8px 0;color:var(--text-dim);font-size:.85rem;line-height:1.5;border-bottom:1px solid rgba(255,255,255,.03)}.info-content li:last-child{border-bottom:none}.info-content li strong{color:var(--text-main)}.pill-btn.small{padding:4px 12px;font-size:.75rem}.pill-btn.large{padding:10px 24px;font-size:1rem}@media(max-width:768px){.location-grid{grid-template-columns:1fr}.add-location-form{flex-direction:column}.add-location-form .pill-input{min-width:auto}}.location-detail-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.location-detail-panel{background:#1a1a2e;border:1px solid #e94560;border-radius:12px;padding:20px;max-width:900px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 10px 40px #e945604d}.location-detail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #333}.location-detail-header h3{margin:0;color:#e94560;font-size:1.4rem}.close-detail-btn{background:transparent;border:1px solid #e94560;color:#e94560;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:1rem;transition:all .2s ease}.close-detail-btn:hover{background:#e94560;color:#fff}.location-detail-stats{margin-bottom:20px}.location-detail-table{overflow-x:auto}.location-detail-table table{width:100%;border-collapse:collapse}.location-detail-table th,.location-detail-table td{padding:10px 15px;text-align:left;border-bottom:1px solid #333}.location-detail-table th{color:#e94560;font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px}.student-name-cell{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.no-passes-row{text-align:center;color:#999;font-style:italic}.hotspot-name-clickable:hover{color:gold!important;text-decoration:underline}@media(max-width:768px){.location-detail-panel{width:95%;padding:15px}.location-detail-header h3{font-size:1.1rem}.location-detail-table th,.location-detail-table td{padding:8px 10px;font-size:.85rem}}
