.app{min-height:100vh;display:flex;flex-direction:column}.container{max-width:1200px;margin:0 auto;padding:0 20px;width:100%}*{margin:0;padding:0;box-sizing:border-box}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#64748b40;border-radius:4px;border:2px solid transparent;background-clip:padding-box;transition:background .2s ease}::-webkit-scrollbar-thumb:hover{background:#64748b66;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-corner{background:transparent}*{scrollbar-width:thin;scrollbar-color:rgba(100,116,139,.25) transparent}body{font-family:var(--font-body, "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, sans-serif);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg-primary, #f5f5f5);color:var(--text-primary, #333)}h1,h2,h3,h4,h5,h6{font-family:var(--font-display, "Syne", sans-serif)}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{min-height:100vh}.admin-layout{display:flex;min-height:100vh;background:var(--bg-primary, #f8fafc)}.admin-main{flex:1;display:flex;flex-direction:column;margin-left:240px}.admin-content{flex:1;padding:2rem;padding-top:calc(64px + 2rem);max-width:1400px;animation:fade-in-up .3s cubic-bezier(.4,0,.2,1) both}::selection{background:#1cb5a333;color:inherit}.form-group{margin-bottom:1.5rem}.form-label,.form-group label{display:block;margin-bottom:.5rem;font-weight:600;color:var(--text-primary, #333);font-size:14px}.form-input,.form-group input{width:100%;padding:12px 16px;font-size:15px;border:2px solid var(--input-border, #e0e0e0);border-radius:6px;background-color:var(--input-bg, #fafafa);color:var(--text-primary, #333);transition:border-color .2s ease,background-color .2s ease,box-shadow .2s ease;font-family:inherit}.form-input:focus,.form-group input:focus{outline:none;border-color:var(--primary-color, #1CB5A3);background-color:#fff;box-shadow:0 0 0 3px #1cb5a31f;transform:translateY(-1px)}.form-input::placeholder,.form-group input::placeholder{color:#999}.btn{padding:.55rem 1.1rem;border:1px solid transparent;border-radius:6px;font-size:.9rem;font-weight:600;line-height:1.4;cursor:pointer;transition:background-color .2s ease,box-shadow .2s ease,transform .1s ease;display:inline-flex;align-items:center;justify-content:center;text-align:center;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--gradient-primary, linear-gradient(135deg, #1CB5A3 0%, #1769AA 100%));color:#fff;box-shadow:0 4px 12px #1cb5a34d;position:relative;overflow:hidden}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #1cb5a366}.btn-primary:active:not(:disabled){transform:translateY(0) scale(.98)}.btn-secondary{background:var(--card-bg-secondary, #f8fafc);color:var(--text-primary, #1e293b);border:1px solid var(--input-border, #cbd5e1)}.btn-secondary:hover:not(:disabled){background:var(--bg-secondary, #f1f5f9);border-color:#94a3b8}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:20px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;transition:transform .2s ease,box-shadow .2s ease}.status-badge:hover{transform:scale(1.03)}.status-online{background-color:#d4edda;color:#155724;box-shadow:0 0 #22c55e00}.status-offline{background-color:#f8d7da;color:#721c24}.status-stale{background-color:#e2e3e5;color:#383d41}.error-message{padding:12px 16px;background:#fee;border:1px solid #fcc;color:#c33;border-radius:6px;margin-bottom:1rem;font-size:14px}.success-message{padding:12px 16px;background:#d4edda;border:1px solid #c3e6cb;color:#155724;border-radius:6px;margin-bottom:1rem;font-size:14px}.loading{text-align:center;padding:40px;color:#666;font-size:16px}@media(prefers-color-scheme:dark){::-webkit-scrollbar-thumb{background:#94a3b833;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:#94a3b859;border:2px solid transparent;background-clip:padding-box}*{scrollbar-color:rgba(148,163,184,.2) transparent}::selection{background:#1cb5a34d}.form-input:focus,.form-group input:focus{background-color:var(--input-bg)}.status-online{background-color:#052e16;color:#86efac}.status-offline{background-color:#450a0a;color:#fca5a5}.status-stale{background-color:#451a03;color:#fcd34d}.error-message{background:#450a0a;border-color:#b91c1c;color:#fca5a5}.success-message{background:#052e16;border-color:#15803d;color:#86efac}.loading{color:var(--text-secondary)}}:root{--primary-color: #1CB5A3;--primary-hover: #169A8B;--secondary-color: #1769AA;--secondary-hover: #125783;--accent-color: #F5A623;--bg-light: #F9FAFB;--bg-card: #FFFFFF;--bg-table: #E5E7EB;--text-heading: #374151;--text-body: #111827;--success-green: #2ECC71;--error-red: #E63946;--warning-amber: #F5A623;--info-blue: #3498DB;--stale-gray: #95A5A6;--sidebar-bg: #1F2937;--sidebar-text: #D1D5DB;--sidebar-active: var(--primary-color);--sidebar-hover: #374151;--kiosk-title: 4rem;--kiosk-status: 3rem;--kiosk-count: 5rem;--kiosk-label: 2rem;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--font-display: "Plus Jakarta Sans", "Public Sans", -apple-system, BlinkMacSystemFont, sans-serif;--font-body: "Plus Jakarta Sans", "Public Sans", -apple-system, BlinkMacSystemFont, sans-serif;--transition-fast: .15s ease;--transition-normal: .3s ease;--glass-bg: rgba(255, 255, 255, .72);--glass-border: rgba(255, 255, 255, .35);--glass-shadow: 0 8px 32px rgba(0, 0, 0, .08);--glass-blur: blur(12px);--glow-primary: 0 0 20px rgba(28, 181, 163, .25);--glow-success: 0 0 12px rgba(34, 197, 94, .35);--glow-danger: 0 0 12px rgba(239, 68, 68, .3);--glow-warning: 0 0 12px rgba(245, 158, 11, .3);--gradient-primary: linear-gradient(135deg, #1CB5A3 0%, #1769AA 100%);--gradient-sidebar: linear-gradient(180deg, #1a2332 0%, #1F2937 40%, #263445 100%);--gradient-card-shine: linear-gradient(135deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.05) 50%, rgba(255,255,255,0) 100%);--bg-primary: #f8fafc;--bg-secondary: #f8fafc;--text-primary: #1e293b;--text-secondary: #64748b;--border-color: #e2e8f0;--input-bg: #ffffff;--input-border: #cbd5e1;--card-bg: #ffffff;--card-bg-secondary: #f8fafc;--cubicle-occupied-bg: #fee2e2;--cubicle-occupied-border: #fca5a5;--cubicle-vacant-bg: #dcfce7;--cubicle-vacant-border: #86efac}@media(prefers-color-scheme:dark){:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-card: #1e293b;--bg-light: #1e293b;--bg-table: #334155;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-heading: #f1f5f9;--text-body: #e2e8f0;--border-color: #334155;--input-bg: #0f172a;--input-border: #475569;--card-bg: #1e293b;--card-bg-secondary: #334155;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4);--glass-bg: rgba(30, 41, 59, .75);--glass-border: rgba(255, 255, 255, .08);--glass-shadow: 0 8px 32px rgba(0, 0, 0, .3);--glow-primary: 0 0 24px rgba(28, 181, 163, .3);--glow-success: 0 0 14px rgba(34, 197, 94, .4);--glow-danger: 0 0 14px rgba(239, 68, 68, .35);--gradient-sidebar: linear-gradient(180deg, #0c1220 0%, #111827 40%, #1a2435 100%);--cubicle-occupied-bg: #450a0a;--cubicle-occupied-border: #991b1b;--cubicle-vacant-bg: #052e16;--cubicle-vacant-border: #166534}}:root{--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-elastic: cubic-bezier(.68, -.6, .32, 1.6);--ease-out-back: cubic-bezier(.34, 1.56, .64, 1);--ease-in-out-circ: cubic-bezier(.85, 0, .15, 1);--duration-instant: .1s;--duration-fast: .2s;--duration-normal: .3s;--duration-slow: .5s;--duration-slower: .7s}@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes scale-in-modal{0%{opacity:0;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes bounce-in{0%{opacity:0;transform:scale(0)}50%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-out-down{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(20px)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes progress-fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-4px)}20%,40%,60%,80%{transform:translate(4px)}}@keyframes bounce-subtle{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes glow-pulse{0%,to{box-shadow:0 0 #3b82f666}50%{box-shadow:0 0 0 8px #3b82f600}}.animate-fade-in-up{animation:fade-in-up var(--duration-normal) var(--ease-smooth)}.animate-fade-in-down{animation:fade-in-down var(--duration-normal) var(--ease-smooth)}.animate-fade-in-left{animation:fade-in-left var(--duration-normal) var(--ease-smooth)}.animate-fade-in-right{animation:fade-in-right var(--duration-normal) var(--ease-smooth)}.animate-scale-in{animation:scale-in var(--duration-normal) var(--ease-smooth)}.animate-bounce-in{animation:bounce-in var(--duration-slow) var(--ease-elastic)}.animate-delay-100{animation-delay:.1s}.animate-delay-200{animation-delay:.2s}.animate-delay-300{animation-delay:.3s}.animate-delay-400{animation-delay:.4s}.animate-delay-500{animation-delay:.5s}.animate-backwards{animation-fill-mode:backwards}.animate-forwards{animation-fill-mode:forwards}.animate-both{animation-fill-mode:both}.hover-lift{transition:transform var(--duration-fast) var(--ease-smooth),box-shadow var(--duration-fast) var(--ease-smooth)}.hover-lift:hover{transform:translateY(-2px)}.hover-lift-strong{transition:transform var(--duration-fast) var(--ease-smooth),box-shadow var(--duration-fast) var(--ease-smooth)}.hover-lift-strong:hover{transform:translateY(-4px)}.hover-scale{transition:transform var(--duration-fast) var(--ease-smooth)}.hover-scale:hover{transform:scale(1.05)}.hover-scale-sm{transition:transform var(--duration-fast) var(--ease-smooth)}.hover-scale-sm:hover{transform:scale(1.02)}.hover-glow{transition:box-shadow var(--duration-fast) var(--ease-smooth)}.hover-glow:hover{box-shadow:0 0 20px #3b82f64d}.active-press:active{transform:scale(.98)}.skeleton{background:linear-gradient(90deg,#f0f0f0,#e0e0e0,#f0f0f0);background-size:200% 100%;animation:shimmer 2s infinite linear;border-radius:4px}.skeleton-text{height:1em;margin-bottom:.5em}.skeleton-avatar{width:40px;height:40px;border-radius:50%}.skeleton-button{height:40px;border-radius:8px}.transition-all{transition:all var(--duration-normal) var(--ease-smooth)}.transition-colors{transition:color var(--duration-fast) var(--ease-smooth),background-color var(--duration-fast) var(--ease-smooth),border-color var(--duration-fast) var(--ease-smooth)}.transition-transform{transition:transform var(--duration-fast) var(--ease-smooth)}.transition-opacity{transition:opacity var(--duration-fast) var(--ease-smooth)}.transition-shadow{transition:box-shadow var(--duration-fast) var(--ease-smooth)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.hover-lift:hover,.hover-lift-strong:hover,.hover-scale:hover,.hover-scale-sm:hover{transform:none}}.focus-ring:focus-visible{outline:3px solid var(--primary-color);outline-offset:2px}.focus-ring-inset:focus-visible{outline:3px solid var(--primary-color);outline-offset:-3px}@keyframes count-reveal{0%{opacity:0;transform:translateY(12px) scale(.8);filter:blur(4px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}.animate-count-reveal{animation:count-reveal .5s var(--ease-out-back) both}@keyframes ripple-expand{0%{transform:translate(-50%,-50%) scale(0);opacity:.5}to{transform:translate(-50%,-50%) scale(4);opacity:0}}@keyframes indicator-slide{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes ambient-glow{0%,to{box-shadow:0 0 8px #1cb5a326}50%{box-shadow:0 0 20px #1cb5a34d}}@keyframes dot-breathe{0%,to{box-shadow:0 0 #16a34a80;transform:scale(1)}50%{box-shadow:0 0 0 4px #16a34a00;transform:scale(1.1)}}@keyframes dot-danger-pulse{0%,to{box-shadow:0 0 #dc262680}50%{box-shadow:0 0 0 4px #dc262600}}.stagger-children>*:nth-child(1){animation-delay:0ms}.stagger-children>*:nth-child(2){animation-delay:50ms}.stagger-children>*:nth-child(3){animation-delay:.1s}.stagger-children>*:nth-child(4){animation-delay:.15s}.stagger-children>*:nth-child(5){animation-delay:.2s}.stagger-children>*:nth-child(6){animation-delay:.25s}.stagger-children>*:nth-child(7){animation-delay:.3s}.stagger-children>*:nth-child(8){animation-delay:.35s}.stagger-children>*:nth-child(9){animation-delay:.4s}.stagger-children>*:nth-child(10){animation-delay:.45s}@keyframes float-gentle{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes shine-sweep{0%{left:-100%}to{left:200%}}.card-enter{animation:fade-in-up var(--duration-normal) var(--ease-smooth) backwards}.card-hover{transition:transform var(--duration-fast) var(--ease-smooth),box-shadow var(--duration-fast) var(--ease-smooth)}.card-hover:hover{transform:translateY(-4px);box-shadow:0 12px 24px #00000026}.button-hover{position:relative;overflow:hidden;transition:all var(--duration-fast) var(--ease-smooth)}.button-hover:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left var(--duration-slow) var(--ease-smooth)}.button-hover:hover:before{left:100%}.button-hover:hover{transform:translateY(-2px)}.button-hover:active{transform:translateY(0)}
