.camp-switcher{display:inline-flex;background:var(--color-bg-base);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:3px;gap:2px}.camp-switcher-btn{border:none;background:transparent;padding:6px 14px;border-radius:var(--radius-full);font-family:inherit;font-size:.8125rem;font-weight:600;color:var(--color-text-muted);cursor:pointer;transition:color var(--transition-fast),background-color var(--transition-fast)}.camp-switcher-btn:hover{color:var(--color-text-base)}.camp-switcher-btn.active{background:var(--color-bg-surface);color:var(--color-primary);box-shadow:var(--shadow-sm)}.layout-container{display:flex;height:100vh;width:100vw;overflow:hidden;background-color:var(--color-bg-base)}.sidebar{width:260px;flex-shrink:0;background-color:var(--color-bg-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;transition:transform var(--transition-default);z-index:40}.sidebar-header{height:70px;padding:0 var(--spacing-lg);display:flex;align-items:center;border-bottom:1px solid var(--color-border)}.logo-container{display:flex;align-items:center;gap:var(--spacing-sm)}.logo-icon{width:32px;height:32px;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));color:#fff;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-weight:700;font-family:var(--font-display)}.logo-text{font-family:var(--font-display);font-weight:700;font-size:1.125rem;color:var(--color-text-base)}.sidebar-nav{flex-grow:1;padding:var(--spacing-md) 0;overflow-y:auto}.sidebar-nav ul{list-style:none;display:flex;flex-direction:column;gap:var(--spacing-xs);padding:0 var(--spacing-md)}.nav-link{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);text-decoration:none;color:var(--color-text-muted);border-radius:var(--radius-md);font-weight:500;transition:background-color var(--transition-fast),color var(--transition-fast)}.nav-link:hover{background-color:var(--color-primary-subtle);color:var(--color-text-base)}.nav-link.active{background-color:var(--color-primary-subtle);color:var(--color-primary)}.nav-icon{opacity:.7}.nav-link.active .nav-icon{opacity:1}.sidebar-footer{padding:var(--spacing-md);border-top:1px solid var(--color-border)}.user-profile{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast)}.user-profile:hover{background-color:var(--color-primary-subtle)}.avatar{width:36px;height:36px;border-radius:var(--radius-full);background-color:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.875rem;font-weight:600}.user-info{display:flex;flex-direction:column}.user-name{font-weight:600;font-size:.875rem}.user-role{font-size:.75rem;color:var(--color-text-muted)}.main-content{flex-grow:1;display:flex;flex-direction:column;overflow:hidden}.top-bar{height:70px;background-color:var(--color-bg-surface);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--spacing-xl);flex-shrink:0}.search-input{width:300px;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:inherit;font-size:.875rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);background-color:var(--color-bg-base)}.search-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-subtle)}.content-area{flex-grow:1;overflow-y:auto;padding:var(--spacing-xl)}.mobile-header{display:none;height:60px;background-color:var(--color-bg-surface);border-bottom:1px solid var(--color-border);align-items:center;justify-content:space-between;padding:0 var(--spacing-md);z-index:30}.mobile-menu-btn{background:none;border:none;color:var(--color-text-base);cursor:pointer;padding:var(--spacing-xs)}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0006;z-index:35;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media(max-width:768px){.mobile-header{display:flex}.desktop-only{display:none}.sidebar{position:fixed;top:60px;bottom:0;left:0;transform:translate(-100%)}.sidebar.sidebar-open{transform:translate(0)}.sidebar-overlay{display:block}.top-bar{padding:0 var(--spacing-md)}.search-input{width:200px}.content-area{padding:var(--spacing-md)}}.mobile-checkin-page{min-height:100vh;background-color:#f8fafc;display:flex;flex-direction:column;font-family:Inter,system-ui,sans-serif}.mobile-app-header{background:#fff;padding:1rem 1.5rem;box-shadow:0 1px 3px #0000000d}.mobile-app-header .logo-container{display:flex;align-items:center;gap:10px}.mobile-app-header .logo-icon{width:32px;height:32px;background:var(--color-primary);color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:800}.mobile-app-header .logo-text{font-weight:700;color:var(--color-text-base);font-size:1.1rem}.mobile-main{flex:1;padding:2rem 1.5rem;max-width:480px;margin:0 auto;width:100%}.welcome-banner{text-align:center;margin-bottom:2.5rem}.welcome-icon{color:var(--color-primary);margin-bottom:1rem}.welcome-banner h1{font-size:1.8rem;font-weight:800;color:var(--color-text-base);margin:0 0 .5rem;letter-spacing:-.5px}.welcome-banner p{color:var(--color-text-muted);margin:0;font-size:1.05rem}.checkin-card{background:#fff;border-radius:20px;padding:1.5rem;box-shadow:0 10px 25px #0000000d;border:1px solid var(--color-border)}.location-info{display:flex;gap:1rem;margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--color-border)}.loc-item{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--color-text-muted);font-weight:500}.loc-item svg{color:var(--color-primary)}.form-group{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.form-group label{font-size:.95rem;font-weight:600;color:var(--color-text-base)}.mobile-select,.mobile-input{padding:1rem;border-radius:12px;border:2px solid var(--color-border);font-size:1rem;font-weight:500;color:var(--color-text-base);background:#f8fafc;transition:all .2s;-webkit-appearance:none;-moz-appearance:none;appearance:none}.mobile-select{cursor:pointer}.mobile-select:focus,.mobile-input:focus{outline:none;border-color:var(--color-primary);background:#fff}.student-verify-card{background:#2563eb0d;border-radius:10px;padding:1rem;margin-bottom:2rem}.verify-row{display:flex;justify-content:space-between;font-size:.95rem;color:var(--color-text-muted)}.verify-value{font-weight:600;color:var(--color-primary)}.action-buttons{display:flex;flex-direction:column;gap:1rem}.btn-submit-attendance{width:100%;padding:1.25rem;border:none;border-radius:14px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .2s;color:#fff;background:var(--color-primary);box-shadow:0 4px 14px #2563eb4d}.btn-submit-attendance:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #2563eb66;filter:brightness(1.1)}.btn-submit-attendance:active:not(:disabled){transform:translateY(0)}.btn-submit-attendance:disabled{opacity:.7;cursor:wait;transform:none;box-shadow:none}.result-toast{margin-top:1.5rem;padding:1rem;border-radius:10px;display:flex;align-items:center;gap:10px;font-weight:500;font-size:.95rem;animation:fadeIn .3s ease-out}.result-toast.success{background:#22c55e1a;color:var(--color-success)}.result-toast.error{background:#ef44441a;color:var(--color-danger)}.mobile-footer{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:2rem;color:#94a3b8;font-size:.85rem}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.mobile-app-header{display:none}:root{--color-primary-hue: 220;--color-primary-sat: 85%;--color-primary-light: 55%;--color-primary: hsl(var(--color-primary-hue), var(--color-primary-sat), var(--color-primary-light));--color-primary-hover: hsl(var(--color-primary-hue), var(--color-primary-sat), 45%);--color-primary-active: hsl(var(--color-primary-hue), var(--color-primary-sat), 35%);--color-primary-subtle: hsl(var(--color-primary-hue), var(--color-primary-sat), 96%);--color-bg-base: hsl(220, 20%, 98%);--color-bg-surface: hsl(0, 0%, 100%);--color-text-base: hsl(220, 20%, 20%);--color-text-muted: hsl(220, 10%, 45%);--color-border: hsl(220, 15%, 90%);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-display: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 4px 6px -1px rgba(0,0,0,.05), 0 2px 4px -1px rgba(0,0,0,.03);--shadow-lg: 0 10px 15px -3px rgba(0,0,0,.05), 0 4px 6px -2px rgba(0,0,0,.025);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-default: .25s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--color-bg-base);color:var(--color-text-base);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:600;letter-spacing:-.02em}.app-container{display:flex;flex-direction:column;min-height:100vh}.app-header{background-color:var(--color-bg-surface);border-bottom:1px solid var(--color-border);padding:var(--spacing-md) var(--spacing-xl);display:flex;align-items:center;box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:10}.app-header h1{font-size:1.25rem;color:var(--color-text-base)}.app-main{flex-grow:1;padding:var(--spacing-xl);display:flex;flex-direction:column}.dashboard-intro{background:var(--color-bg-surface);border-radius:var(--radius-lg);padding:var(--spacing-xl);box-shadow:var(--shadow-md);border:1px solid var(--color-border);transition:transform var(--transition-default),box-shadow var(--transition-default)}.dashboard-intro:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.dashboard-intro h2{color:var(--color-primary);margin-bottom:var(--spacing-sm)}.dashboard-intro p{color:var(--color-text-muted)}
