@import"https://fonts.googleapis.com/css2?family=Lexend:wght@300;400;500;600;700&display=swap";:root{--green-dark: #1e4d3b;--green-mid: #2a6049;--green-accent: #3a7d5e;--green-light: #e8f5ee;--green-border: #c5dfd0;--text-dark: #1a2e25;--text-mid: #3d5a4a;--text-light: #6b8c7a;--text-muted: #9ab0a2;--white: #ffffff;--card-shadow: 0 8px 40px rgba(30, 77, 59, .14), 0 2px 10px rgba(30,77,59,.08);--radius-card: 18px;--radius-btn: 12px;--font: "Lexend", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font);font-weight:400;line-height:1.5;color:var(--text-dark);background:#f0f4f2;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}.sd-loading-screen{min-height:100vh;background:linear-gradient(135deg,#e8f5ee,#d6ede2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem}.sd-loading-spinner{width:52px;height:52px;border:4px solid var(--green-border);border-top-color:var(--green-dark);border-radius:50%;animation:sd-spin .9s linear infinite}.sd-loading-text{font-size:.9rem;font-weight:500;color:var(--text-mid)}.sd-error-screen{min-height:100vh;background:linear-gradient(135deg,#fff0f0,#ffe5e5);display:flex;align-items:center;justify-content:center;padding:1.25rem}.sd-error-card{background:var(--white);border-radius:var(--radius-card);box-shadow:var(--card-shadow);padding:2.5rem 2rem;max-width:400px;width:100%;text-align:center}.sd-error-icon{width:56px;height:56px;border-radius:50%;background:#fff0f0;display:flex;align-items:center;justify-content:center;margin:0 auto 1rem;color:#e53e3e}.sd-error-icon svg{width:28px;height:28px}.sd-error-title{font-size:1.2rem;font-weight:700;color:var(--text-dark);margin-bottom:.5rem}.sd-error-message{font-size:.875rem;color:var(--text-light);margin-bottom:1.5rem}.sd-error-btn{display:inline-block;padding:.7rem 1.8rem;background:linear-gradient(135deg,var(--green-dark),var(--green-mid));color:var(--white);border:none;border-radius:var(--radius-btn);font-family:var(--font);font-size:.9rem;font-weight:600;cursor:pointer;transition:opacity .2s,transform .15s}.sd-error-btn:hover{opacity:.9;transform:translateY(-1px)}.sd-page{min-height:100vh;background:#f0f4f2;display:flex;flex-direction:column;align-items:center;padding:1.5rem 1rem 2rem}.sd-top-logo-wrap{display:flex;justify-content:center;align-items:center;margin-bottom:1rem}.sd-top-logo{width:110px;height:110px;object-fit:contain;filter:drop-shadow(0 4px 12px rgba(30,77,59,.18));transition:transform .3s ease}.sd-top-logo:hover{transform:translateY(-3px)}.sd-logo-fallback{width:110px;height:110px;background:linear-gradient(135deg,var(--green-dark),var(--green-accent));border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--white);font-size:1.1rem;font-weight:700;box-shadow:0 4px 16px #1e4d3b40}.sd-hidden{display:none!important}.sd-card{width:100%;max-width:520px;background:var(--white);border-radius:var(--radius-card);box-shadow:var(--card-shadow);overflow:hidden;animation:sd-fadeUp .5s ease-out both}.sd-card-header{background:linear-gradient(135deg,var(--green-dark) 0%,var(--green-mid) 100%);padding:.9rem 1.5rem;text-align:center}.sd-card-header-title{font-size:1rem;font-weight:700;color:var(--white);letter-spacing:.12em;text-transform:uppercase}.sd-card-body{display:flex;flex-direction:row;gap:0;padding:1.25rem 1.25rem 1rem;background:var(--white)}.sd-card-left{flex:1;display:flex;flex-direction:column;gap:1rem;padding-right:1rem;border-right:1px solid var(--green-border)}.sd-student-row{display:flex;align-items:flex-start;gap:.85rem}.sd-photo-wrap{width:80px;height:88px;border-radius:10px;overflow:hidden;flex-shrink:0;background:#e8f5ee;border:2px solid var(--green-border)}.sd-photo{width:100%;height:100%;object-fit:cover}.sd-photo-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--green-accent)}.sd-photo-placeholder svg{width:40px;height:40px}.sd-student-info{flex:1;padding-top:.15rem}.sd-student-name{font-size:1rem;font-weight:700;color:var(--green-dark);line-height:1.25;margin-bottom:.35rem}.sd-student-divider{width:100%;height:1px;background:var(--green-border);margin:.35rem 0}.sd-student-detail{font-size:.8rem;font-weight:500;color:var(--text-mid)}.sd-uni-row{display:flex;align-items:center;gap:.7rem;padding-top:.25rem}.sd-uni-logo{width:44px;height:44px;object-fit:contain;flex-shrink:0}.sd-uni-logo-fallback{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,var(--green-dark),var(--green-accent));display:flex;align-items:center;justify-content:center;color:var(--white);font-size:.85rem;font-weight:700;flex-shrink:0}.sd-uni-text{display:flex;flex-direction:column}.sd-uni-name{font-size:.65rem;font-weight:700;color:var(--green-dark);line-height:1.35;letter-spacing:.03em}.sd-card-right{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-left:1rem;gap:.55rem;flex-shrink:0}.sd-qr-wrap{background:var(--white);border:1.5px solid var(--green-border);border-radius:10px;padding:6px;display:inline-flex;box-shadow:0 2px 8px #1e4d3b14}.sd-qr-canvas{width:160px!important;height:160px!important;display:block;border-radius:6px}.sd-qr-label{font-size:.68rem;font-weight:400;color:var(--text-light);text-align:center;line-height:1.45}.sd-timer-row{display:flex;align-items:center;gap:.35rem}.sd-timer-icon{width:15px;height:15px;color:var(--green-dark);flex-shrink:0}.sd-timer-value{font-size:1rem;font-weight:700;color:var(--green-dark);font-variant-numeric:tabular-nums;letter-spacing:.04em;transition:color .3s}.sd-timer-expiring{color:#e07c00;animation:sd-pulse 1s ease-in-out infinite}.sd-card-footer-bar{height:8px;background:linear-gradient(135deg,var(--green-dark) 0%,var(--green-mid) 100%)}.sd-actions{width:100%;max-width:520px;margin-top:1rem;display:flex;flex-direction:column;gap:.5rem}.sd-action-btn{width:100%;display:flex;align-items:center;gap:.85rem;background:var(--white);border:none;border-radius:var(--radius-btn);padding:.85rem 1.1rem;cursor:pointer;font-family:var(--font);font-size:.9rem;font-weight:500;color:var(--text-dark);box-shadow:0 2px 10px #1e4d3b12;transition:box-shadow .2s,transform .15s,background .2s;text-align:left}.sd-action-btn:hover{background:var(--green-light);box-shadow:0 4px 16px #1e4d3b21;transform:translateY(-1px)}.sd-action-btn:active{transform:translateY(0)}.sd-action-icon{width:22px;height:22px;display:flex;align-items:center;justify-content:center;color:var(--green-dark);flex-shrink:0}.sd-action-icon svg{width:18px;height:18px}.sd-action-label{flex:1}.sd-action-arrow{width:18px;height:18px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);flex-shrink:0}.sd-action-arrow svg{width:16px;height:16px}.sd-footer-text{margin-top:1.5rem;font-size:.72rem;color:var(--text-muted);text-align:center}@keyframes sd-spin{to{transform:rotate(360deg)}}@keyframes sd-fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes sd-pulse{0%,to{opacity:1}50%{opacity:.55}}@media(max-width:600px){.sd-top-logo{width:90px;height:90px}.sd-card-header-title{font-size:.9rem}.sd-card-body{padding:1rem}.sd-card-left{padding-right:.75rem}.sd-card-right{padding-left:.75rem}.sd-qr-canvas{width:140px!important;height:140px!important}.sd-student-name{font-size:.9rem}.sd-photo-wrap{width:72px;height:80px}}@media(max-width:420px){.sd-page{padding:1rem .75rem 1.5rem}.sd-top-logo{width:80px;height:80px}.sd-card-body{padding:.85rem .9rem .75rem;gap:0}.sd-card-left{padding-right:.65rem}.sd-card-right{padding-left:.65rem}.sd-photo-wrap{width:64px;height:72px}.sd-student-name{font-size:.85rem}.sd-student-detail{font-size:.73rem}.sd-qr-canvas{width:120px!important;height:120px!important}.sd-qr-label{font-size:.62rem}.sd-timer-value{font-size:.9rem}.sd-uni-name{font-size:.6rem}.sd-uni-logo{width:36px;height:36px}.sd-action-btn{font-size:.85rem;padding:.75rem .9rem}}@media(max-width:360px){.sd-card-body{flex-direction:column;align-items:stretch}.sd-card-left{border-right:none;border-bottom:1px solid var(--green-border);padding-right:0;padding-bottom:1rem}.sd-card-right{padding-left:0;padding-top:1rem;flex-direction:row;justify-content:center;gap:1rem;flex-wrap:wrap}.sd-qr-canvas{width:150px!important;height:150px!important}}.lp-page{min-height:100vh;background:#eef1ef;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1rem}.lp-page-header{text-align:center;margin-bottom:1.4rem}.lp-page-title{font-size:1.45rem;font-weight:700;color:var(--text-dark);line-height:1.25;letter-spacing:-.01em}.lp-page-subtitle{font-size:.82rem;font-weight:400;color:var(--text-light);margin-top:.3rem}.lp-card{background:var(--white);width:100%;max-width:420px;border-radius:20px;box-shadow:0 12px 48px #1e4d3b21,0 2px 8px #1e4d3b12;padding:2rem 2rem 1.6rem;display:flex;flex-direction:column;align-items:stretch;animation:lp-rise .45s ease-out both}.lp-card-logo-wrap{display:flex;justify-content:center;margin-bottom:1rem}.lp-card-logo{width:88px;height:88px;object-fit:contain;filter:drop-shadow(0 3px 10px rgba(30,77,59,.15))}.lp-logo-fallback{width:88px;height:88px;border-radius:50%;background:linear-gradient(135deg,var(--green-dark),var(--green-accent));display:flex;align-items:center;justify-content:center;color:var(--white);font-size:1rem;font-weight:700}.lp-hidden{display:none!important}.lp-card-title{text-align:center;font-size:1.3rem;font-weight:600;color:var(--text-dark);margin-bottom:1.2rem;letter-spacing:-.01em}.lp-form{display:flex;flex-direction:column;gap:.7rem}.lp-field{display:flex;align-items:center;background:#f5f8f6;border:1.5px solid #dde8e2;border-radius:10px;padding:0 .9rem;height:44px;transition:border-color .2s,box-shadow .2s;position:relative}.lp-field:focus-within{border-color:var(--green-accent);box-shadow:0 0 0 3px #3a7d5e1a;background:var(--white)}.lp-field--error{border-color:#ef4444;background:#fff8f8}.lp-field--error:focus-within{box-shadow:0 0 0 3px #ef44441a}.lp-field-icon{width:17px;height:17px;flex-shrink:0;color:#8fa89a;display:flex;align-items:center;justify-content:center;margin-right:.6rem}.lp-field-icon svg{width:17px;height:17px}.lp-input{flex:1;border:none;outline:none;background:transparent;font-family:var(--font);font-size:.83rem;font-weight:400;color:var(--text-dark);height:100%}.lp-input::placeholder{color:#a0b4aa;font-weight:400}.lp-eye-btn{background:none;border:none;cursor:pointer;padding:0;margin-left:.5rem;width:18px;height:18px;flex-shrink:0;color:#8fa89a;display:flex;align-items:center;justify-content:center;transition:color .15s}.lp-eye-btn:hover{color:var(--green-dark)}.lp-eye-btn svg{width:18px;height:18px}.lp-error{display:flex;align-items:flex-start;gap:.5rem;font-size:.78rem;font-weight:500;color:#e53e3e;background:#e53e3e0f;border-left:3px solid #e53e3e;border-radius:6px;padding:.55rem .75rem;margin-top:.1rem}.lp-error svg{width:15px;height:15px;flex-shrink:0;margin-top:1px}.lp-submit-btn{width:100%;height:44px;margin-top:.4rem;border:none;border-radius:10px;background:var(--green-dark);color:var(--white);font-family:var(--font);font-size:.92rem;font-weight:600;letter-spacing:.02em;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5rem;transition:background .2s,transform .15s,box-shadow .2s;position:relative;overflow:hidden}.lp-submit-btn:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.07) 0%,transparent 100%);pointer-events:none}.lp-submit-btn:hover:not(:disabled){background:#174030;box-shadow:0 4px 16px #1e4d3b4d;transform:translateY(-1px)}.lp-submit-btn:active:not(:disabled){transform:translateY(0);box-shadow:none}.lp-submit-btn--loading{opacity:.75;cursor:not-allowed}.lp-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.35);border-top-color:var(--white);border-radius:50%;animation:lp-spin .8s linear infinite;flex-shrink:0}.lp-security-note{display:flex;align-items:center;justify-content:center;gap:.45rem;margin-top:1.1rem;font-size:.75rem;color:#8fa89a;font-weight:400}.lp-security-icon{width:13px;height:13px;flex-shrink:0;color:#8fa89a;display:flex;align-items:center}.lp-security-icon svg{width:13px;height:13px}.lp-footer{margin-top:1.4rem;font-size:.72rem;color:var(--text-muted);text-align:center}@keyframes lp-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes lp-spin{to{transform:rotate(360deg)}}@media(max-width:480px){.lp-page{padding:1.5rem .85rem}.lp-page-title{font-size:1.2rem}.lp-page-subtitle{font-size:.78rem}.lp-card{padding:1.6rem 1.4rem 1.4rem;max-width:100%;border-radius:16px}.lp-card-logo{width:76px;height:76px}.lp-card-title{font-size:1.15rem}.lp-field{height:42px}.lp-submit-btn{height:42px;font-size:.88rem}}@media(max-width:360px){.lp-page-title{font-size:1.05rem}.lp-card{padding:1.4rem 1.1rem 1.2rem;border-radius:14px}.lp-card-logo{width:68px;height:68px}.lp-field{height:40px;padding:0 .75rem}.lp-submit-btn{height:40px;font-size:.85rem}}.app-container{min-height:100vh;display:flex;flex-direction:column}.header{background:var(--white);padding:1rem 2rem;box-shadow:0 2px 10px #0000000d;display:flex;justify-content:space-between;align-items:center}.header-title{font-size:1.4rem;font-weight:700;color:var(--text-dark);display:flex;align-items:center;gap:.5rem}.header-title img{height:2rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.header-logo{height:2.5rem;width:auto}.logout-btn{background:linear-gradient(135deg,var(--green-accent),var(--green-dark));color:var(--white);border:none;padding:.6rem 1.2rem;border-radius:.5rem;font-family:var(--font);font-weight:600;cursor:pointer;transition:all .3s ease;font-size:.875rem}.logout-btn:hover{opacity:.9;transform:translateY(-1px)}.login-page{width:100%;max-width:520px;text-align:center;margin:0 auto;padding:20px;display:flex;flex-direction:column;min-height:100vh;justify-content:center}.login-layout{width:100%;max-width:520px;text-align:center}.login-header{text-align:center;margin-bottom:40px}.login-header__logo{width:200px;max-width:100%;height:auto;margin-bottom:20px;filter:drop-shadow(0 4px 12px rgba(0,0,0,.08));transition:transform .3s ease}.login-header__logo:hover{transform:translateY(-4px)}.login-header__title{font-size:30px;font-weight:700;color:var(--text-dark);margin:0;line-height:1.2;background:linear-gradient(135deg,var(--green-dark),var(--green-mid));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.login-header__subtitle{font-size:15px;font-weight:400;color:var(--text-mid);margin-top:10px;line-height:1.5;position:relative}.login-header__subtitle:after{content:"";position:absolute;bottom:-8px;left:50%;transform:translate(-50%);width:60px;height:2px;background:linear-gradient(90deg,transparent,var(--green-accent),transparent)}.login-form{display:flex;justify-content:center;width:100%;padding:20px;box-sizing:border-box}.login-card{background:var(--white);width:520px;max-width:100%;padding:32px 28px;border-radius:20px;box-shadow:0 25px 50px -12px #1e4d3b26;text-align:center;position:relative;overflow:hidden}.login-card:before{content:"";position:absolute;top:0;left:0;width:100%;height:4px;background:linear-gradient(90deg,var(--green-accent),var(--green-dark))}.login-card__title{font-size:22px;font-weight:700;color:var(--text-dark);margin-bottom:28px;position:relative}.login-card__title:after{content:"";position:absolute;bottom:-12px;left:50%;transform:translate(-50%);width:40px;height:3px;background:var(--green-accent);border-radius:2px}.input-group{display:flex;align-items:center;gap:14px;background:#f7faf8;border-radius:14px;padding:13px 15px;margin-bottom:14px;border:1px solid var(--green-border);transition:all .3s ease;position:relative}.input-group--hover{background:#f0f9f5;border-color:var(--green-accent);box-shadow:0 4px 12px #1e4d3b14}.input-group--error{background:#fff8f8;border-color:#ef4444;animation:pulse .6s ease}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.input-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.input-icon__img{width:20px;height:20px;object-fit:contain;filter:brightness(.7);transition:filter .3s ease}.input-group--hover .input-icon__img,.input-group--error .input-icon__img{filter:brightness(1) saturate(1.2)}.input-field{border:none;outline:none;background:transparent;width:100%;font-size:14px;color:var(--text-dark);font-weight:500;font-family:var(--font);transition:color .3s ease}.input-field::placeholder{color:var(--text-light);font-weight:400}.login-btn{width:100%;padding:15px;margin-top:14px;border-radius:14px;border:none;background:linear-gradient(135deg,var(--green-accent),var(--green-dark));color:var(--white);font-size:15px;font-weight:600;font-family:var(--font);cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden;letter-spacing:.4px}.login-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:.5s}.login-btn:hover{opacity:.92;transform:translateY(-2px);box-shadow:0 8px 20px #1e4d3b40}.login-btn:hover:before{left:100%}.login-btn:active{transform:translateY(0)}.login-btn.btn-loading{opacity:.8;cursor:not-allowed}.spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top:2px solid var(--white);animation:sd-spin .9s linear infinite;margin-right:8px;display:inline-block;vertical-align:middle}.error-message{display:flex;align-items:center;gap:10px;color:#ef4444;font-size:13px;font-weight:500;margin-top:12px;padding:10px 14px;background:#ef44440d;border-radius:10px;border-left:4px solid #ef4444}.error-message svg{width:18px;height:18px;flex-shrink:0}.security-badge{display:flex;align-items:center;gap:12px;margin-top:26px;padding:14px;background:#f7faf8;border-radius:12px;border:1px solid var(--green-border);justify-content:center}.security-badge__icon{width:26px;height:26px;display:flex;align-items:center;justify-content:center}.security-badge__icon svg{width:16px;height:16px}.security-badge__text strong{display:block;font-size:13px;font-weight:600;color:var(--text-dark);margin-bottom:3px}.security-badge__text p{font-size:11px;color:var(--text-mid);margin:0}.login-footer{padding:18px 10px;text-align:center;font-size:12px;color:var(--text-muted);word-wrap:break-word;position:relative}.login-footer:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:40px;height:1px;background:linear-gradient(90deg,transparent,var(--green-accent),transparent)}.dashboard-container{padding:20px;max-width:1200px;margin:0 auto;width:100%}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.dashboard-title{font-size:1.75rem;font-weight:700;color:var(--text-dark)}.id-card{background:var(--white);border-radius:20px;box-shadow:var(--card-shadow);overflow:hidden}.university-header{background:linear-gradient(135deg,var(--green-dark),var(--green-mid));padding:1.5rem;color:var(--white)}.university-header-content{display:flex;justify-content:space-between;align-items:center}.university-header-title h2{font-size:1.4rem;font-weight:600;margin-bottom:.4rem}.university-header-title p{font-size:.85rem;opacity:.9}.student-id{font-size:1.1rem;font-weight:600;text-align:right}.student-info{padding:1.5rem;border-bottom:1px solid var(--green-border)}.student-info-content{display:flex;align-items:center;gap:1.5rem}.student-avatar{width:6rem;height:6rem;background:var(--green-light);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2rem;color:var(--green-accent)}.student-details h3{font-size:1.4rem;font-weight:700;margin-bottom:.4rem;color:var(--text-dark)}.student-details p{font-size:.9rem;color:var(--text-mid)}.qr-section{padding:1.5rem;text-align:center}.qr-section h4{font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-mid);margin-bottom:1rem}.qr-container{position:relative;display:inline-block;margin:0 auto}.qr-canvas{width:280px;height:280px;border:4px solid var(--white);box-shadow:0 4px 12px #00000014;background:var(--white)}.qr-timer{position:absolute;top:-14px;right:-14px;background:linear-gradient(135deg,var(--green-dark),var(--green-mid));color:var(--white);width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.85rem}.qr-validity{display:flex;align-items:center;gap:.5rem;margin-top:1rem;font-size:.875rem}.qr-validity-indicator{width:10px;height:10px;border-radius:50%}.qr-validity-indicator.valid{background:#22c55e}.qr-validity-indicator.expiring{background:#f59e0b}.qr-security{background:#f7faf8;border-radius:12px;border:1px solid var(--green-border);padding:1rem;margin-top:1.5rem;text-align:left}.qr-security-icon{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.qr-security-icon svg{width:1.2rem;height:1.2rem;color:var(--green-dark)}.qr-security h5{font-size:.875rem;font-weight:600;color:var(--text-dark);margin-bottom:.25rem}.qr-security p{font-size:.8rem;color:var(--text-mid)}.admin-dashboard{display:grid;grid-template-columns:1fr 300px;gap:1.5rem}.admin-scanner{background:var(--white);border-radius:20px;box-shadow:var(--card-shadow);overflow:hidden}.scanner-preview{position:relative;aspect-ratio:16/9;background:#000;overflow:hidden}.scanner-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.scanner-frame{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:280px;height:280px;border:4px solid var(--green-dark);border-radius:8px}.scanner-timer{position:absolute;top:1rem;left:1rem;width:12px;height:12px;border-radius:50%;background:#22c55e;animation:sd-pulse 1.5s infinite}.scanner-status{padding:1.5rem;text-align:center}.scanner-status h3{font-size:1.4rem;font-weight:700;margin-bottom:.4rem}.scanner-status.valid{color:#22c55e}.scanner-status.expired{color:#ef4444}.scanner-status.expiring{color:#f59e0b}.scanner-status p{font-size:.9rem;color:var(--text-mid)}.scan-history{background:var(--white);border-radius:20px;box-shadow:var(--card-shadow);overflow:hidden}.scan-history-header{padding:1.5rem;border-bottom:1px solid var(--green-border)}.scan-history-title{font-size:1.4rem;font-weight:700;color:var(--text-dark)}.scan-history-list{padding:1rem;max-height:500px;overflow-y:auto}.scan-item{display:flex;align-items:center;padding:1rem;border-bottom:1px solid var(--green-border)}.scan-item:last-child{border-bottom:none}.scan-item-icon{width:20px;height:20px;border-radius:50%;margin-right:1rem;flex-shrink:0}.scan-item-icon.valid{background:#22c55e}.scan-item-icon.expired{background:#f59e0b}.scan-item-icon.invalid{background:#ef4444}.scan-item-details{flex:1}.scan-item-name{font-weight:600;color:var(--text-dark);font-size:.9rem}.scan-item-id{font-size:.8rem;color:var(--text-mid)}.scan-item-time{font-size:.8rem;color:var(--text-muted);text-align:right}@media(max-width:768px){.login-header__logo{width:180px}.login-header__title{font-size:26px}.login-header__subtitle{font-size:14px}.login-card{padding:24px 18px}.login-card__title{font-size:19px}.input-group{padding:11px 13px}.login-btn{padding:13px;font-size:14px}.admin-dashboard{grid-template-columns:1fr}}@media(max-width:480px){.login-header{margin-bottom:28px}.login-header__logo{width:150px;margin-bottom:14px}.login-header__title{font-size:20px}.login-header__subtitle{font-size:13px}.login-card{padding:18px 14px;border-radius:16px}.login-card__title{font-size:17px}.input-group{gap:10px;padding:10px 11px}.login-btn{font-size:13px;padding:11px}.security-badge{flex-direction:column;text-align:center;gap:8px}.dashboard-title{font-size:1.4rem}.qr-canvas{width:240px;height:240px}}@media(max-width:360px){.login-header__logo{width:130px}.login-header__title{font-size:18px}.login-header__subtitle{font-size:12px}.login-card{padding:14px 11px}.login-btn{padding:10px}.qr-canvas{width:210px;height:210px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}@media(prefers-contrast:high){body{background:var(--white);color:#000}.sd-card{box-shadow:none;border:2px solid #000}}.ad-layout{display:flex;min-height:100vh;background:#f0f4f2;font-family:var(--font);position:relative}.ad-sidebar{width:220px;background:var(--green-dark);display:flex;flex-direction:column;padding:0 0 1rem;flex-shrink:0}.ad-sidebar--desktop{position:sticky;top:0;height:100vh;overflow-y:auto;z-index:20}.ad-sidebar--mobile{display:none;position:fixed;top:0;left:0;height:100%;width:260px;z-index:200;transform:translate(-100%);transition:transform .28s cubic-bezier(.4,0,.2,1);overflow-y:auto;padding-top:0}.ad-sidebar--mobile.ad-sidebar--open{transform:translate(0)}.ad-sidebar-overlay{display:none;position:fixed;inset:0;background:#00000073;z-index:199;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.ad-sidebar-close{display:flex;align-items:center;justify-content:flex-end;padding:.75rem 1rem .25rem;background:none;border:none;cursor:pointer;color:#ffffffb3;transition:color .15s;width:100%}.ad-sidebar-close:hover{color:var(--white)}.ad-hamburger{display:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:36px;height:36px;border:1.5px solid #dde8e2;border-radius:8px;background:var(--white);cursor:pointer;padding:6px;flex-shrink:0;transition:background .18s,border-color .18s}.ad-hamburger:hover{background:var(--green-light);border-color:var(--green-accent)}.ad-hamburger span{display:block;width:18px;height:2px;background:var(--text-dark);border-radius:2px;transition:background .18s}.ad-sidebar-brand{display:flex;align-items:center;gap:.75rem;padding:1.1rem 1rem 1rem;border-bottom:1px solid rgba(255,255,255,.1)}.ad-sidebar-logo{width:52px;height:52px;object-fit:contain;flex-shrink:0}.ad-sidebar-brand-text{display:flex;flex-direction:column}.ad-sidebar-brand-title{font-size:.82rem;font-weight:700;color:var(--white);line-height:1.3;letter-spacing:.01em}.ad-sidebar-brand-sub{font-size:.7rem;color:#ffffff8c}.ad-sidebar-profile{display:flex;align-items:center;gap:.75rem;padding:1rem 1rem .75rem;border-bottom:1px solid rgba(255,255,255,.08)}.ad-sidebar-avatar{width:42px;height:42px;border-radius:50%;background:#ffffff26;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--white);overflow:hidden}.ad-sidebar-avatar svg{width:24px;height:24px}.ad-sidebar-avatar img{width:100%;height:100%;object-fit:cover}.ad-sidebar-profile-name{font-size:.82rem;font-weight:600;color:var(--white);line-height:1.3}.ad-sidebar-profile-role{font-size:.7rem;color:#ffffff8c}.ad-sidebar-nav{flex:1;padding:.75rem .65rem;display:flex;flex-direction:column;gap:.25rem}.ad-nav-item{width:100%;display:flex;align-items:center;gap:.65rem;padding:.6rem .75rem;border:none;border-radius:9px;background:transparent;color:#ffffffb3;font-family:var(--font);font-size:.82rem;font-weight:500;cursor:pointer;text-align:left;transition:background .18s,color .18s}.ad-nav-item svg{width:16px;height:16px;flex-shrink:0}.ad-nav-item span{white-space:nowrap}.ad-nav-item:hover{background:#ffffff14;color:var(--white)}.ad-nav-item--active{background:#ffffff26!important;color:var(--white)!important;font-weight:600}.ad-sidebar-version{font-size:.68rem;color:#ffffff4d;text-align:center;padding:.5rem 0 0}.ad-main{flex:1;min-width:0;display:flex;flex-direction:column;overflow-y:auto}.ad-topbar{display:flex;align-items:center;justify-content:space-between;padding:.65rem 1.25rem;background:var(--white);border-bottom:1px solid #e4ece8;gap:.75rem;flex-wrap:wrap;position:sticky;top:0;z-index:10}.ad-topbar-left,.ad-topbar-right{display:flex;align-items:center;gap:.5rem}.ad-topbar-btn{display:flex;align-items:center;gap:.4rem;padding:.4rem .85rem;border:1.5px solid #dde8e2;border-radius:8px;background:var(--white);font-family:var(--font);font-size:.78rem;font-weight:500;color:var(--text-dark);cursor:pointer;transition:border-color .18s,background .18s;white-space:nowrap}.ad-topbar-btn:hover{border-color:var(--green-accent);background:var(--green-light)}.ad-status-badge{display:flex;align-items:center;gap:.35rem;padding:.4rem .85rem;border-radius:8px;font-size:.78rem;font-weight:600;white-space:nowrap}.ad-status-badge--online{background:#eafaf1;color:#1e7e45}.ad-status-badge--offline{background:#fdf2e3;color:#b45309}.ad-status-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.ad-status-badge--online .ad-status-dot{background:#22c55e}.ad-status-badge--offline .ad-status-dot{background:#f59e0b}.ad-content-grid{display:grid;grid-template-columns:1fr 230px;gap:1rem;padding:1rem 1.25rem 1.5rem;align-items:start}.ad-scanner-col{display:flex;flex-direction:column;gap:.85rem;min-width:0}.ad-scanner-card{background:var(--white);border-radius:14px;box-shadow:0 2px 12px #1e4d3b14;overflow:hidden}.ad-scanner-card-header{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--green-dark);color:var(--white);font-size:.85rem;font-weight:600;letter-spacing:.01em}.ad-camera-wrap{position:relative;width:100%;aspect-ratio:16/9;background:#111;overflow:hidden}.ad-camera-video{width:100%;height:100%;object-fit:cover;display:block;background:#111}.ad-camera-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.ad-scan-frame{position:relative;width:180px;height:180px}.ad-scan-corner{position:absolute;width:22px;height:22px;border-color:#4ade80;border-style:solid}.ad-scan-corner--tl{top:0;left:0;border-width:3px 0 0 3px;border-radius:3px 0 0}.ad-scan-corner--tr{top:0;right:0;border-width:3px 3px 0 0;border-radius:0 3px 0 0}.ad-scan-corner--bl{bottom:0;left:0;border-width:0 0 3px 3px;border-radius:0 0 0 3px}.ad-scan-corner--br{bottom:0;right:0;border-width:0 3px 3px 0;border-radius:0 0 3px}.ad-scan-dot{position:absolute;top:.75rem;left:.75rem;width:10px;height:10px;border-radius:50%;background:#22c55e}.ad-scan-dot--active{animation:ad-pulse-dot 1.4s ease-in-out infinite}@keyframes ad-pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}.ad-camera-label{position:absolute;bottom:0;left:0;right:0;background:#143c28d1;color:var(--white);display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.55rem;font-size:.75rem;font-weight:700;letter-spacing:.08em}.ad-scan-result{padding:.85rem 1rem;min-height:80px}.ad-result-valid{display:flex;flex-direction:column;gap:.55rem}.ad-result-invalid{display:flex;flex-direction:column;gap:.4rem}.ad-result-student-row{display:flex;align-items:center;gap:.75rem;background:#f8fbf9;border:1px solid var(--green-border);border-radius:10px;padding:.65rem .85rem}.ad-result-photo{width:48px;height:52px;border-radius:7px;object-fit:cover;flex-shrink:0;border:1.5px solid var(--green-border)}.ad-result-photo-placeholder{width:48px;height:52px;border-radius:7px;background:var(--green-light);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--green-accent)}.ad-result-photo-placeholder svg{width:26px;height:26px}.ad-result-student-name{font-size:.88rem;font-weight:700;color:var(--text-dark);line-height:1.3}.ad-result-student-id{font-size:.75rem;color:var(--text-mid);margin-top:.1rem}.ad-result-student-program{font-size:.73rem;color:var(--text-light)}.ad-result-status{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .8rem;border-radius:20px;font-size:.78rem;font-weight:700;letter-spacing:.05em;width:fit-content}.ad-result-status--valid{background:#eafaf1;color:#16a34a}.ad-result-status--invalid{background:#fef2f2;color:#dc2626}.ad-result-status--expired{background:#fffbeb;color:#d97706}.ad-result-meta{font-size:.72rem;color:var(--text-muted)}.ad-result-idle{text-align:center;padding:.25rem 0}.ad-result-idle-title{font-size:.88rem;font-weight:600;color:var(--text-mid)}.ad-result-idle-sub{font-size:.78rem;color:var(--text-light);margin-top:.25rem}.ad-result-idle-hint{font-size:.7rem;color:var(--text-muted);margin-top:.3rem}.ad-stats-row{display:flex;align-items:center;background:var(--white);border-radius:12px;box-shadow:0 2px 10px #1e4d3b12;overflow:hidden}.ad-stats-cell{flex:1;display:flex;align-items:center;gap:.6rem;padding:.75rem 1rem}.ad-stats-cell-icon{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.ad-stats-cell-icon--valid{background:#eafaf1;color:#16a34a}.ad-stats-cell-icon--invalid{background:#fef2f2;color:#dc2626}.ad-stats-cell-label{font-size:.72rem;font-weight:600;color:var(--text-dark);line-height:1.3}.ad-stats-cell-value{font-size:.68rem;color:var(--text-light);margin-top:.1rem}.ad-stats-divider{width:1px;height:36px;background:var(--green-border);flex-shrink:0}.ad-logs-card{background:var(--white);border-radius:14px;box-shadow:0 2px 12px #1e4d3b14;overflow:hidden}.ad-logs-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid #eef3f0}.ad-logs-title{font-size:.85rem;font-weight:700;color:var(--text-dark)}.ad-logs-empty{text-align:center;padding:2rem 1rem;font-size:.8rem;color:var(--text-muted)}.ad-logs-table-wrap{overflow-x:auto}.ad-logs-table{width:100%;border-collapse:collapse;font-size:.78rem}.ad-logs-table thead tr{border-bottom:1px solid #eef3f0}.ad-logs-table th{padding:.55rem 1rem;text-align:left;font-size:.72rem;font-weight:600;color:var(--text-light);white-space:nowrap}.ad-logs-table th:last-child,.ad-logs-table td:last-child{text-align:right}.ad-logs-table tbody tr{border-bottom:1px solid #f3f7f5;transition:background .12s}.ad-logs-table tbody tr:last-child{border-bottom:none}.ad-logs-table tbody tr:hover{background:#f8fbf9}.ad-logs-table td{padding:.6rem 1rem;vertical-align:middle}.ad-logs-id{font-family:monospace;font-size:.75rem;color:var(--text-mid);white-space:nowrap}.ad-logs-name{font-weight:600;color:var(--text-dark)}.ad-logs-time{font-size:.72rem;color:var(--text-muted);white-space:nowrap}.ad-logs-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border-radius:20px;font-size:.68rem;font-weight:700;letter-spacing:.04em;white-space:nowrap}.ad-logs-badge--valid{background:#eafaf1;color:#16a34a}.ad-logs-badge--invalid{background:#fef2f2;color:#dc2626}.ad-cards-col{display:flex;flex-direction:column;gap:.7rem}.ad-stat-card{background:var(--white);border-radius:12px;box-shadow:0 2px 10px #1e4d3b12;padding:.85rem 1rem;display:flex;align-items:center;gap:.75rem;cursor:pointer;transition:box-shadow .18s,transform .15s}.ad-stat-card:hover{box-shadow:0 4px 18px #1e4d3b21;transform:translateY(-1px)}.ad-stat-card-icon{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.ad-stat-card-icon--students{background:#e8f5ee;color:var(--green-dark)}.ad-stat-card-icon--invalid{background:#fef2f2;color:#dc2626}.ad-stat-card-icon--logs{background:#eff6ff;color:#2563eb}.ad-stat-card-icon--admins{background:#fdf4ff;color:#7c3aed}.ad-stat-card-label{font-size:.82rem;font-weight:700;color:var(--text-dark);line-height:1.3}.ad-stat-card-value{font-size:.72rem;color:var(--text-light);margin-top:.15rem}.ad-camera-error-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem 1.25rem}.ad-camera-error-card{background:var(--white);border-radius:16px;box-shadow:var(--card-shadow);padding:2.5rem 2rem;max-width:380px;width:100%;text-align:center}.ad-camera-error-icon{width:54px;height:54px;border-radius:50%;background:#fef2f2;display:flex;align-items:center;justify-content:center;margin:0 auto 1rem;color:#dc2626}.ad-camera-error-icon svg{width:26px;height:26px}.ad-camera-error-title{font-size:1.1rem;font-weight:700;color:var(--text-dark);margin-bottom:.5rem}.ad-camera-error-msg{font-size:.82rem;color:var(--text-light);margin-bottom:1.5rem;line-height:1.5}.ad-camera-retry-btn{display:block;width:100%;padding:.7rem;margin-bottom:.5rem;border:none;border-radius:10px;background:var(--green-dark);color:var(--white);font-family:var(--font);font-size:.85rem;font-weight:600;cursor:pointer;transition:opacity .2s,transform .15s}.ad-camera-retry-btn:hover{opacity:.9;transform:translateY(-1px)}.ad-camera-logout-btn{display:block;width:100%;padding:.7rem;border:1.5px solid var(--green-border);border-radius:10px;background:var(--white);color:var(--text-dark);font-family:var(--font);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .18s}.ad-camera-logout-btn:hover{background:var(--green-light)}@media(max-width:1024px){.ad-content-grid{grid-template-columns:1fr 200px}}@media(max-width:900px){.ad-content-grid{grid-template-columns:1fr}.ad-cards-col{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}}@media(max-width:768px){.ad-sidebar--desktop{display:none}.ad-sidebar--mobile{display:flex;flex-direction:column}.ad-sidebar-overlay{display:block}.ad-hamburger{display:flex}.ad-layout{flex-direction:column}.ad-main{width:100%}.ad-content-grid{padding:.75rem;gap:.75rem}.ad-topbar{padding:.6rem 1rem}}@media(max-width:600px){.ad-cards-col{grid-template-columns:repeat(2,1fr);gap:.6rem}.ad-stats-row{flex-direction:column;align-items:stretch}.ad-stats-divider{width:100%;height:1px}.ad-stats-cell{padding:.65rem 1rem}}@media(max-width:420px){.ad-cards-col{grid-template-columns:1fr}.ad-topbar-btn .ad-topbar-btn-text,.ad-status-label{display:none}.ad-logs-table th,.ad-logs-table td{padding:.5rem .6rem;font-size:.7rem}.ad-logs-badge{font-size:.62rem;padding:.15rem .45rem}}.ad-result-dismiss{position:absolute;top:.6rem;right:.6rem;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--green-border);background:var(--white);color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,color .15s,border-color .15s;flex-shrink:0}.ad-result-dismiss:hover{background:#fef2f2;color:#dc2626;border-color:#fca5a5}.ad-result-valid{position:relative}.ad-queue-chip{display:inline-flex;align-items:center;padding:.18rem .55rem;border-radius:20px;font-size:.68rem;font-weight:700;background:#fffbeb;color:#b45309;border:1px solid #fde68a;white-space:nowrap;flex-shrink:0}.ad-queue-chip--warn{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.ad-topbar-btn--syncing{opacity:.75;cursor:not-allowed}.ad-topbar-btn:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.ad-logs-header-actions{display:flex;align-items:center;gap:.5rem}.ad-logs-reload-btn{width:28px;height:28px;border-radius:7px;border:1.5px solid #dde8e2;background:var(--white);color:var(--text-mid);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,border-color .15s,color .15s;flex-shrink:0}.ad-logs-reload-btn:hover:not(:disabled){background:var(--green-light);border-color:var(--green-accent);color:var(--green-dark)}.ad-logs-reload-btn:disabled{opacity:.4;cursor:not-allowed}.ad-topbar-status-pill{font-size:.78rem;font-weight:600;gap:.4rem}@keyframes ad-spin{to{transform:rotate(360deg)}}.ad-topbar-btn--syncing{opacity:.7;cursor:not-allowed}.ad-topbar-dropdown-wrap{position:relative}.ad-topbar-dropdown{position:absolute;top:calc(100% + 6px);left:0;min-width:210px;background:var(--white);border:1.5px solid #dde8e2;border-radius:10px;box-shadow:0 8px 24px #1e4d3b1f;z-index:100;overflow:hidden}.ad-dropdown-item{display:flex;align-items:center;gap:.5rem;padding:.6rem .85rem;font-size:.78rem;color:var(--text-dark);border-bottom:1px solid #f0f4f2}.ad-dropdown-item--sub{font-size:.72rem;color:var(--text-muted);padding-top:.35rem}.ad-dropdown-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:#f59e0b}.ad-dropdown-dot--online{background:#22c55e}.ad-dropdown-action{display:block;width:100%;padding:.55rem .85rem;text-align:left;font-family:var(--font);font-size:.78rem;font-weight:600;color:var(--green-dark);background:none;border:none;cursor:pointer;transition:background .15s}.ad-dropdown-action:hover{background:var(--green-light)}.ad-logs-reload-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1.5px solid #dde8e2;border-radius:7px;background:var(--white);color:var(--text-muted);cursor:pointer;transition:border-color .18s,color .18s,background .18s;flex-shrink:0}.ad-logs-reload-btn:hover{border-color:var(--green-accent);color:var(--green-dark);background:var(--green-light)}.ad-result-dismiss{position:absolute;top:.5rem;right:.5rem;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:none;border-radius:50%;background:#0000000f;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s}.ad-result-dismiss:hover{background:#fef2f2;color:#dc2626}.ad-result-valid,.ad-result-invalid{position:relative}.cpm-modal{max-width:460px}@keyframes cpm-shake{0%,to{transform:translate(0)}20%{transform:translate(-7px)}40%{transform:translate(7px)}60%{transform:translate(-5px)}80%{transform:translate(4px)}}.cpm-shake{animation:cpm-shake .45s ease}.cpm-header-left{display:flex;align-items:center;gap:.6rem}.cpm-header-icon{width:30px;height:30px;border-radius:8px;background:#22c55e1f;border:1px solid rgba(34,197,94,.22);display:flex;align-items:center;justify-content:center;color:#86efac;flex-shrink:0}.cpm-subtitle{font-size:.78rem;color:#ffffff61;margin:0 0 1.1rem;line-height:1.5}.cpm-alert{margin:0 1.5rem;border-radius:10px}.cpm-field-wrap{margin-bottom:.85rem}.cpm-field-wrap:last-of-type{margin-bottom:0}.cpm-err-msg{display:flex;align-items:center;gap:.3rem}.cpm-strength{display:flex;align-items:center;gap:.5rem;margin-top:.35rem}.cpm-strength-bars{display:flex;gap:3px;flex:1}.cpm-strength-bar{flex:1;height:3px;border-radius:99px}.cpm-strength-label{font-size:.67rem;font-weight:600;white-space:nowrap;min-width:60px;text-align:right;letter-spacing:.02em}.cpm-requirements{margin-top:1rem;background:#ffffff08;border:1px solid rgba(255,255,255,.07);border-radius:10px;padding:.75rem 1rem}.cpm-req-title{font-size:.68rem;font-weight:600;color:#ffffff59;text-transform:uppercase;letter-spacing:.05em;margin:0 0 .5rem}.cpm-req-list{list-style:none;display:flex;flex-direction:column;gap:.32rem}.cpm-req-item{display:flex;align-items:center;gap:.45rem;font-size:.75rem;color:#ffffff59;transition:color .2s}.cpm-req-item svg{flex-shrink:0;color:#fff3;transition:color .2s}.cpm-req-item--ok{color:#86efac}.cpm-req-item--ok svg{color:#22c55e}.cd-btn--confirm{display:inline-flex;align-items:center;gap:.4rem}.pg-page-title{font-size:1rem;font-weight:600;color:var(--text-dark);margin:0;letter-spacing:-.01em}.pg-add-btn{background:var(--green-dark)!important;color:var(--white)!important;border-color:var(--green-dark)!important;font-weight:600!important}.pg-add-btn:hover{background:var(--green-mid)!important;border-color:var(--green-mid)!important}.pg-content{padding:1.25rem 1.5rem 2rem;width:100%;box-sizing:border-box}.pg-content--narrow{max-width:800px}.pg-filters{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:.85rem}.pg-search-wrap{position:relative;flex:1;min-width:200px;display:flex;align-items:center}.pg-search-icon{position:absolute;left:.75rem;color:var(--text-muted);pointer-events:none}.pg-search{width:100%;padding:.55rem 2rem .55rem 2.3rem;background:var(--white);border:1.5px solid #dde8e2;border-radius:9px;font-family:var(--font);font-size:.82rem;color:var(--text-dark);outline:none;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.pg-search::placeholder{color:var(--text-muted)}.pg-search:focus{border-color:var(--green-accent);box-shadow:0 0 0 3px #3a7d5e14}.pg-search-clear{position:absolute;right:.6rem;background:none;border:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;line-height:1;padding:0}.pg-search-clear:hover{color:var(--text-dark)}.pg-select{padding:.52rem .85rem;background:var(--white);border:1.5px solid #dde8e2;border-radius:9px;font-family:var(--font);font-size:.8rem;color:var(--text-dark);outline:none;cursor:pointer;appearance:none;min-width:130px;transition:border-color .2s}.pg-select:focus{border-color:var(--green-accent)}.pg-count{font-size:.72rem;color:var(--text-muted);margin:0 0 .85rem}.pg-alert{display:flex;align-items:center;gap:.6rem;padding:.7rem 1rem;border-radius:10px;font-size:.8rem;font-weight:500;margin-bottom:1rem}.pg-alert--success{background:#eafaf1;border:1px solid var(--green-border);color:#1e7e45}.pg-alert--error{background:#fff5f5;border:1px solid #fecaca;color:#dc2626}.pg-retry-btn{margin-left:auto;padding:.25rem .7rem;background:#dc262614;border:1px solid #fecaca;border-radius:6px;color:#dc2626;font-size:.72rem;font-family:var(--font);cursor:pointer;transition:background .15s}.pg-retry-btn:hover{background:#dc262624}.pg-loading{display:flex;align-items:center;gap:.75rem;padding:3rem 1rem;color:var(--text-muted);font-size:.85rem}.pg-spinner{width:18px;height:18px;border:2px solid var(--green-border);border-top-color:var(--green-dark);border-radius:50%;animation:pg-spin .8s linear infinite;flex-shrink:0}@keyframes pg-spin{to{transform:rotate(360deg)}}.pg-table-card{background:var(--white);border-radius:14px;box-shadow:0 2px 12px #1e4d3b14;overflow:hidden}.pg-table-wrap{overflow-x:auto}.pg-table{width:100%;border-collapse:collapse;font-size:.82rem}.pg-table thead tr{background:#f7faf8;border-bottom:1px solid #eef3f0}.pg-table th{text-align:left;padding:.7rem 1rem;font-size:.68rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-light);white-space:nowrap}.pg-table tbody tr{border-bottom:1px solid #f3f7f5;transition:background .12s}.pg-table tbody tr:last-child{border-bottom:none}.pg-table tbody tr:hover{background:#f8fbf9}.pg-table td{padding:.75rem 1rem;vertical-align:middle}.pg-empty{text-align:center;padding:2.5rem;color:var(--text-muted);font-size:.82rem}.pg-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;border:1.5px solid var(--green-border)}.pg-avatar-ph{width:36px;height:36px;border-radius:50%;background:var(--green-light);display:flex;align-items:center;justify-content:center;color:var(--green-accent)}.pg-cell-primary{font-weight:500;color:var(--text-dark);margin:0;font-size:.82rem}.pg-cell-sub{font-size:.72rem;color:var(--text-light);margin:.1rem 0 0}.pg-cell-mono{font-family:monospace;font-size:.78rem;color:var(--text-mid)}.pg-badge{display:inline-flex;align-items:center;padding:.2rem .6rem;border-radius:99px;font-size:.68rem;font-weight:600;letter-spacing:.03em;text-transform:capitalize}.pg-badge--active{background:#eafaf1;color:#16a34a;border:1px solid #bbf7d0}.pg-badge--suspended{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.pg-badge--graduated{background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe}.pg-actions{display:flex;gap:.4rem;flex-wrap:nowrap}.pg-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.32rem .7rem;border-radius:7px;font-size:.72rem;font-weight:500;font-family:var(--font);cursor:pointer;border:1px solid transparent;transition:background .18s,border-color .18s;white-space:nowrap}.pg-btn--edit{background:#eff6ff;color:#2563eb;border-color:#bfdbfe}.pg-btn--edit:hover{background:#dbeafe}.pg-btn--delete{background:#fef2f2;color:#dc2626;border-color:#fecaca}.pg-btn--delete:hover{background:#fee2e2}.pg-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-bottom:1.25rem}@media(max-width:640px){.pg-summary{grid-template-columns:repeat(2,1fr)}}.pg-summary-card{background:var(--white);border-radius:12px;box-shadow:0 2px 8px #1e4d3b0f;padding:1rem 1.1rem .85rem;text-align:center;border:1px solid var(--green-border)}.pg-summary-num{font-size:1.6rem;font-weight:700;line-height:1;margin:0 0 .2rem}.pg-summary-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;margin:0;color:var(--text-light)}.pg-summary-card--valid .pg-summary-num{color:#16a34a}.pg-summary-card--invalid .pg-summary-num{color:#dc2626}.pg-summary-card--expired .pg-summary-num{color:#d97706}.pg-summary-card--total .pg-summary-num{color:var(--text-dark)}.pg-card{background:var(--white);border-radius:14px;box-shadow:0 2px 12px #1e4d3b14;padding:1.25rem 1.5rem;border:1px solid var(--green-border)}.pg-card-head{display:flex;align-items:center;gap:.4rem;font-size:.72rem;font-weight:600;color:var(--text-light);text-transform:uppercase;letter-spacing:.06em;margin-bottom:1.1rem}.pg-profile-row{display:flex;align-items:center;gap:1rem}.pg-profile-avatar{width:56px;height:56px;border-radius:50%;background:var(--green-light);border:2px solid var(--green-border);display:flex;align-items:center;justify-content:center;color:var(--green-dark);flex-shrink:0}.pg-profile-name{font-size:1rem;font-weight:600;color:var(--text-dark);margin:0 0 .15rem}.pg-profile-email{font-size:.78rem;color:var(--text-light);margin:0}.pg-info-grid{display:flex;flex-direction:column}.pg-info-row{display:flex;justify-content:space-between;align-items:center;padding:.55rem 0;border-bottom:1px solid #f3f7f5;gap:1rem}.pg-info-row:last-child{border-bottom:none}.pg-info-label{font-size:.78rem;color:var(--text-light)}.pg-info-value{font-size:.78rem;color:var(--text-dark);font-weight:500;text-align:right}.pg-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}@media(max-width:560px){.pg-form-grid{grid-template-columns:1fr}}.pg-field{display:flex;flex-direction:column;gap:.3rem}.pg-label{font-size:.72rem;font-weight:500;color:var(--text-mid)}.pg-input{background:#f7faf8;border:1.5px solid #dde8e2;border-radius:8px;padding:.55rem .8rem;font-family:var(--font);font-size:.82rem;color:var(--text-dark);outline:none;transition:border-color .2s,box-shadow .2s;width:100%;box-sizing:border-box}.pg-input::placeholder{color:var(--text-muted)}.pg-input:focus{border-color:var(--green-accent);box-shadow:0 0 0 3px #3a7d5e14;background:var(--white)}.pg-input--error{border-color:#ef4444!important;background:#fff8f8!important}.pg-select-input{appearance:none;cursor:pointer}.pg-field-error{font-size:.68rem;color:#ef4444;margin:0}.pg-pass-wrap{position:relative}.pg-pass-wrap .pg-input{padding-right:2.5rem}.pg-eye-btn{position:absolute;right:.7rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0;display:flex;align-items:center;transition:color .15s}.pg-eye-btn:hover{color:var(--green-dark)}.pg-submit-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.7rem 1.5rem;background:linear-gradient(135deg,var(--green-dark),var(--green-mid));color:var(--white);border:none;border-radius:10px;font-family:var(--font);font-size:.85rem;font-weight:600;cursor:pointer;transition:opacity .2s,transform .1s,box-shadow .2s}.pg-submit-btn:hover:not(:disabled){opacity:.92;box-shadow:0 4px 16px #1e4d3b40;transform:translateY(-1px)}.pg-submit-btn:active:not(:disabled){transform:translateY(0)}.pg-submit-btn:disabled{opacity:.6;cursor:not-allowed}.pg-btn-spinner{width:12px;height:12px;border:2px solid rgba(255,255,255,.35);border-top-color:var(--white);border-radius:50%;animation:pg-spin .7s linear infinite;flex-shrink:0}.pg-modal-backdrop{position:fixed;inset:0;background:#00000059;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}.pg-modal{background:var(--white);border-radius:16px;width:100%;max-width:580px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #1e4d3b2e,0 4px 16px #1e4d3b1a;animation:pg-modal-in .2s ease;border:1px solid var(--green-border)}@keyframes pg-modal-in{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.pg-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.2rem 1.5rem 1rem;border-bottom:1px solid var(--green-border)}.pg-modal-title{font-size:1rem;font-weight:600;color:var(--text-dark);margin:0}.pg-modal-close{width:28px;height:28px;border-radius:7px;border:1.5px solid #dde8e2;background:var(--white);color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,border-color .15s}.pg-modal-close:hover{background:#fef2f2;border-color:#fecaca;color:#dc2626}.pg-modal-body{padding:1.25rem 1.5rem}.pg-modal-footer{display:flex;justify-content:flex-end;gap:.6rem;padding:1rem 1.5rem 1.25rem;border-top:1px solid var(--green-border)}.pg-modal-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.25rem;border-radius:9px;font-size:.82rem;font-weight:600;font-family:var(--font);cursor:pointer;border:1.5px solid transparent;transition:background .18s,border-color .18s,opacity .18s}.pg-modal-btn:disabled{opacity:.6;cursor:not-allowed}.pg-modal-btn--cancel{background:var(--white);color:var(--text-mid);border-color:#dde8e2}.pg-modal-btn--cancel:hover{background:var(--green-light);border-color:var(--green-border)}.pg-modal-btn--confirm{background:linear-gradient(135deg,var(--green-dark),var(--green-mid));color:var(--white)}.pg-modal-btn--confirm:hover:not(:disabled){opacity:.9}@media(max-width:768px){.pg-content{padding:1rem 1rem 2rem}.pg-content--narrow{max-width:100%}}@media(max-width:560px){.pg-filters{flex-direction:column}.pg-select{width:100%}.pg-modal{border-radius:12px}.pg-modal-footer{flex-direction:column}.pg-modal-btn{width:100%;justify-content:center}}.rs-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}@media(max-width:560px){.rs-grid-2{grid-template-columns:1fr}}.rs-field-wrap{display:flex;flex-direction:column;gap:.28rem}.rs-label{font-size:.72rem;font-weight:500;color:var(--text-mid)}.rs-input{background:#f7faf8;border:1.5px solid #dde8e2;border-radius:8px;padding:.55rem .8rem;font-family:var(--font);font-size:.82rem;color:var(--text-dark);outline:none;transition:border-color .2s,box-shadow .2s,background .2s;width:100%;box-sizing:border-box}.rs-input::placeholder{color:var(--text-muted)}.rs-input:focus{border-color:var(--green-accent);box-shadow:0 0 0 3px #3a7d5e14;background:var(--white)}.rs-input--error{border-color:#ef4444!important;background:#fff8f8!important}.rs-input--mono{font-family:monospace;letter-spacing:.04em}.rs-select{appearance:none;cursor:pointer}.rs-hint{font-size:.68rem;color:var(--text-muted);margin:0;line-height:1.4}.rs-error-msg{font-size:.68rem;color:#ef4444;margin:0}.rs-pass-wrap{position:relative}.rs-pass-wrap .rs-input{padding-right:2.5rem}.rs-eye-btn{position:absolute;right:.7rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0;display:flex;align-items:center;transition:color .15s}.rs-eye-btn:hover{color:var(--green-dark)}.rs-spinner{display:inline-block;width:13px;height:13px;border:2px solid rgba(255,255,255,.35);border-top-color:var(--white);border-radius:50%;animation:pg-spin .7s linear infinite;flex-shrink:0}.rs-alert{display:flex;align-items:center;gap:.6rem;padding:.65rem 1rem;border-radius:9px;font-size:.78rem;font-weight:500}.rs-alert--success{background:#eafaf1;border:1px solid var(--green-border);color:#1e7e45}.rs-alert--error{background:#fff5f5;border:1px solid #fecaca;color:#dc2626}
