.scanner-layout{-webkit-overflow-scrolling:touch;color:#fff;background:#0b0d12;min-height:100dvh;overflow:hidden auto}.scanner-header{z-index:100;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-sizing:border-box;background:#0b0d12;border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;width:100%;height:64px;padding:0 20px;display:flex;position:fixed;top:0;left:0}@media (width<=768px){.scanner-header{padding:0 16px}}.scanner-title{letter-spacing:-.01em;margin:0;font-size:16px;font-weight:600}@media (width<=480px){.scanner-title{font-size:15px}}.logout-btn{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff1f;border-radius:6px;align-items:center;gap:8px;min-height:44px;padding:8px 16px;font-size:14px;font-weight:500;transition:all .2s;display:flex}.logout-btn:hover{background:#ffffff0f;border-color:#fff3}.logout-btn:active{transform:translateY(1px)}.logout-btn .logout-icon{font-size:18px}@media (width<=480px){.logout-btn{padding:8px 12px;font-size:13px}.logout-btn span{display:none}}.scanner-main-content{justify-content:center;width:100%;padding-top:64px;display:flex}.otp-input-group{justify-content:center;gap:12px;width:100%;display:flex}.otp-input-box{color:#fff;text-align:center;caret-color:#fff9;box-sizing:border-box;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:10px;width:44px;height:48px;padding:0;font-size:20px;font-weight:600;transition:all .2s}.otp-input-box::placeholder{color:#fff6}.otp-input-box:focus{background:#ffffff14;border-color:#5b5fc7;outline:none;box-shadow:0 0 0 2px #5b5fc740}.otp-input-box:disabled{opacity:.5;cursor:not-allowed}.otp-input-box::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.otp-input-box::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}@media (width<=380px){.otp-input-box{width:38px;height:44px;font-size:18px}}.login-page{color:#fff;background:#0b0d12;justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{background:#ffffff0a;border:1px solid #ffffff0f;border-radius:16px;flex-direction:column;align-items:center;gap:24px;width:100%;max-width:400px;padding:48px;display:flex}@media (width<=480px){.login-card{padding:32px 20px}}.login-icon{color:#fff;filter:drop-shadow(0 0 8px #ffffff26);font-size:64px}.login-title{letter-spacing:-.01em;text-align:center;margin:0;font-size:24px;font-weight:600}.login-tagline{color:#ffffff73;letter-spacing:.05em;text-align:center;margin:-12px 0 0;font-size:13px;font-weight:400}.login-subtitle{color:#fff9;text-align:center;margin:0;font-size:14px}.login-form{flex-direction:column;gap:16px;width:100%;display:flex}.login-input{color:#fff;box-sizing:border-box;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:10px;width:100%;padding:16px;font-size:16px;transition:all .2s}.login-input::placeholder{color:#fff6}.login-input:focus{background:#ffffff14;border-color:#ffffff4d;outline:none}.login-input:disabled{opacity:.5;cursor:not-allowed}.login-button{color:#fff;cursor:pointer;background:#5b5fc7;border:none;border-radius:10px;width:100%;padding:16px;font-size:14px;font-weight:500;transition:all .2s}.login-button:hover:not(:disabled){background:#7377d9}.login-button:disabled{opacity:.5;cursor:not-allowed}.login-error{color:#ff6b6b;text-align:center;margin:0;font-size:13px}.login-back-btn{color:#fff9;cursor:pointer;background:0 0;border:none;padding:8px;font-size:13px}.login-back-btn:hover{color:#fff}.scanner-content{justify-content:center;align-items:center;width:100%;min-height:calc(100vh - 64px);padding:24px 16px;display:flex}.scanner-content-inner{text-align:center;flex-direction:column;align-items:center;gap:24px;width:100%;max-width:592px;display:flex}.scanner-icon-wrapper{justify-content:center;align-items:center;display:flex}.scanner-icon-wrapper .scanner-icon{color:#fff;opacity:1;filter:drop-shadow(0 0 8px #ffffff26);font-size:80px}@media (width<=768px){.scanner-icon-wrapper .scanner-icon{font-size:64px}}h2{letter-spacing:-.01em;color:#fff;margin:0;font-size:28px;font-weight:600}@media (width<=768px){h2{font-size:24px}}.scanner-subtitle{color:#fff9;margin:0;font-size:15px}@media (width<=768px){.scanner-subtitle{font-size:14px}}.scanner-access-points{flex-direction:column;gap:16px;width:100%;display:flex}.scanner-access-point-card{cursor:pointer;text-align:left;background:#ffffff0a;border:1px solid #ffffff0f;border-radius:14px;justify-content:space-between;align-items:center;width:100%;min-height:80px;padding:24px;transition:all .2s;display:flex}.scanner-access-point-card:hover{background:#ffffff14;border-color:#ffffff1f;transform:translate(4px)}.scanner-access-point-card:active{transform:translate(2px)}.scanner-access-point-card .ap-info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.scanner-access-point-card .ap-info h3{color:#fff;letter-spacing:-.01em;margin:0;font-size:16px;font-weight:600;line-height:1.3}.scanner-access-point-card .ap-info .ap-site{color:#ffffffb3;margin:0;font-size:14px;font-weight:500;line-height:1.4}.scanner-access-point-card .ap-info .ap-location{color:#ffffff80;margin:0;font-size:13px;line-height:1.4}.scanner-access-point-card .ap-arrow{color:#fff9;flex-shrink:0;margin-left:16px;font-size:24px}@media (width<=768px){.scanner-access-point-card{padding:20px}.scanner-access-point-card .ap-info h3{font-size:15px}.scanner-access-point-card .ap-info p{font-size:13px}}.loading-state,.error-state,.empty-state{text-align:center;color:#fff9;width:100%;padding:24px 0}.error-message{color:#ff6b6b;margin-bottom:16px}.btn-retry{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff1f;border-radius:10px;padding:12px 20px;font-size:14px;font-weight:500;transition:all .2s}.btn-retry:hover{background:#ffffff1f;border-color:#fff3}.pagination-controls{justify-content:center;align-items:center;gap:20px;width:100%;padding-top:8px;display:flex}.pagination-btn{color:#ffffffb3;cursor:pointer;background:0 0;border:1px solid #ffffff1a;border-radius:10px;align-items:center;gap:4px;min-height:36px;padding:8px 16px;font-size:13px;font-weight:500;transition:all .2s;display:flex}.pagination-btn .pagination-icon{font-size:18px}.pagination-btn:hover:not(:disabled){color:#fff;background:#ffffff0f;border-color:#fff3}.pagination-btn:disabled{opacity:.3;cursor:not-allowed}@media (width<=480px){.pagination-btn{padding:8px 12px;font-size:12px}.pagination-btn span{display:none}}.pagination-indicator{color:#ffffff80;white-space:nowrap;text-align:center;min-width:48px;font-size:13px;font-weight:500}.scan-input-panel{background:var(--surface);border:1px solid var(--border);cursor:text;border-radius:14px;flex-direction:column;gap:12px;width:100%;padding:24px;display:flex}@media (width<=768px){.scan-input-panel{padding:20px}}.scan-input-header{justify-content:space-between;align-items:baseline;gap:12px;display:flex}@media (width<=480px){.scan-input-header{flex-direction:column;gap:2px}}.scan-input-label{color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase;font-size:13px;font-weight:500}.scan-input-hint{color:var(--text-muted);opacity:.5;font-size:12px;font-weight:400}.scan-input-row{gap:12px;display:flex}@media (width<=768px){.scan-input-row{flex-direction:column}}.scan-input-field{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:10px;flex:1;padding:16px;font-family:SF Mono,Monaco,Courier New,monospace;font-size:14px;transition:border-color .2s,box-shadow .2s}.scan-input-field::placeholder{color:var(--text-muted);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.scan-input-field:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #5b5fc726}.scan-input-field:disabled{opacity:.5;cursor:not-allowed}.scan-input-button{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:10px;min-width:90px;padding:16px 24px;font-size:14px;font-weight:500;transition:all .2s}.scan-input-button:hover:not(:disabled){background:var(--accent-light)}.scan-input-button:active:not(:disabled){transform:translateY(1px)}.scan-input-button:disabled{opacity:.4;cursor:not-allowed}@media (width<=768px){.scan-input-button{padding:16px}}.recent-activity{background:var(--surface);border:1px solid var(--border);border-radius:14px;width:100%;overflow:hidden}.recent-activity-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 24px;display:flex}@media (width<=768px){.recent-activity-header{padding:12px 20px}}.recent-activity-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0;font-size:13px;font-weight:500}.recent-activity-count{color:var(--text-muted);background:var(--bg);text-align:center;border-radius:9999px;min-width:22px;padding:2px 8px;font-size:12px;font-weight:500}.recent-activity-list{flex-direction:column;max-height:420px;display:flex;overflow-y:auto}@media (width<=768px){.recent-activity-list{max-height:300px}}.activity-item{border-bottom:1px solid #ffffff08;align-items:center;gap:12px;padding:12px 24px;transition:background .15s;display:flex}.activity-item:last-child{border-bottom:none}.activity-item:hover{background:#ffffff05}.activity-item.activity-item--valid{border-left:3px solid #16a34a}.activity-item.activity-item--used{border-left:3px solid #d97706}.activity-item.activity-item--invalid{border-left:3px solid #cf222e}@media (width<=768px){.activity-item{gap:8px;padding:8px 20px}}.activity-item-status{flex-shrink:0;align-items:center;gap:6px;min-width:90px;display:flex}@media (width<=480px){.activity-item-status{min-width:auto}}.activity-item-icon{flex-shrink:0;font-size:16px}.activity-item--valid .activity-item-icon{color:#16a34a}.activity-item--used .activity-item-icon{color:#d97706}.activity-item--invalid .activity-item-icon{color:#cf222e}.activity-badge{letter-spacing:.1em;text-transform:uppercase;border-radius:6px;padding:2px 7px;font-size:10px;font-weight:700;line-height:1.4}.activity-badge.activity-badge--valid{color:#16a34a;background:#16a34a1a;border:1px solid #16a34a40}.activity-badge.activity-badge--used{color:#d97706;background:#d977061a;border:1px solid #d9770640}.activity-badge.activity-badge--invalid{color:#cf222e;background:#cf222e1a;border:1px solid #cf222e40}.activity-item-details{flex-direction:column;flex:1;gap:1px;min-width:0;padding:0 8px;display:flex}.activity-item-label{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}@media (width<=768px){.activity-item-label{font-size:13px}}.activity-item-type{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.activity-item-time{color:var(--text-muted);white-space:nowrap;flex-shrink:0;font-family:SF Mono,Monaco,Courier New,monospace;font-size:13px}@media (width<=768px){.activity-item-time{font-size:12px}}.activity-item:first-child{animation:.25s activitySlideIn}@keyframes activitySlideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.scannerModeRoot{--bg:#0a0a0f;--surface:#1a1a24;--surface-2:#252535;--border:#2d2d40;--text:#e8e8f0;--text-muted:#9494a8;--accent:#5b5fc7;--accent-light:#7377d9}.scanner-scan-page{background:var(--bg);flex-direction:column;gap:24px;width:100%;max-width:680px;min-height:calc(100vh - 64px);margin:0 auto;padding:32px 24px;display:flex}@media (width<=768px){.scanner-scan-page{gap:20px;padding:20px}}@media (width<=480px){.scanner-scan-page{padding:16px}}.scan-area{flex-direction:column;flex:1;align-items:center;gap:24px;display:flex}@media (width<=768px){.scan-area{gap:20px}}.loading-state,.error-state,.empty-state{text-align:center;padding:24px}.loading-state p,.error-state p,.empty-state p{color:var(--text-muted);margin:0;font-size:14px}@media (width<=768px){.loading-state,.error-state,.empty-state{padding:20px}}.error-state .error-icon{color:#cf222e;margin-bottom:16px;font-size:64px}.error-state h2{color:var(--text);margin:0 0 12px}.error-state .error-message{color:#cf222e;margin-bottom:16px}.error-state .btn-retry{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff1f;border-radius:10px;padding:12px 20px;font-size:14px;font-weight:500;transition:all .2s}.error-state .btn-retry:hover{background:#ffffff1f;border-color:#fff3}.scan-header{background:var(--surface);border:1px solid var(--border);border-radius:14px;justify-content:space-between;align-items:center;width:100%;padding:20px 24px;display:flex}.scan-header .scan-header-info{flex-direction:column;gap:2px;min-width:0;display:flex}.scan-header .scan-header-site{color:var(--text-muted);letter-spacing:0;font-size:13px;font-weight:400;line-height:1.3}.scan-header .scan-header-name{color:var(--text);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:600;line-height:1.3}.scan-header .change-ap-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:10px;flex-shrink:0;margin-left:16px;padding:8px 16px;font-size:13px;font-weight:500;transition:all .2s}.scan-header .change-ap-btn:hover{background:var(--surface-2);border-color:var(--accent);color:var(--text)}@media (width<=768px){.scan-header{padding:16px 20px}.scan-header .scan-header-name{font-size:16px}.scan-header .scan-header-site{font-size:12px}}.camera-loading{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:12px;width:100%;min-height:280px;display:flex}.camera-loading .camera-loading-icon{color:var(--text-muted);opacity:.5;font-size:48px}.camera-loading p{color:var(--text-muted);margin:0;font-size:14px}.input-mode-toggle{background:var(--surface);border:1px solid var(--border);border-radius:14px;width:100%;display:flex;overflow:hidden}.mode-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex:1;justify-content:center;align-items:center;gap:6px;min-height:44px;padding:12px 16px;font-size:13px;font-weight:500;transition:all .2s;display:flex}.mode-btn .mode-btn-icon{font-size:18px}.mode-btn:hover:not(.mode-btn--active){color:var(--text);background:#ffffff08}.mode-btn.mode-btn--active{background:var(--surface-2);color:var(--text);font-weight:600}.mode-btn:first-child{border-right:1px solid var(--border)}.scan-result{background:var(--surface);border-radius:14px;flex-direction:column;align-items:center;width:100%;padding:48px;animation:.3s fadeIn;display:flex}.scan-result.allow{border:2px solid #16a34a}.scan-result.allow .result-icon{color:#16a34a}.scan-result.allow h2,.scan-result.allow p{color:var(--text)}.scan-result.deny{border:2px solid #cf222e}.scan-result.deny .result-icon{color:#cf222e}.scan-result.deny h2,.scan-result.deny p{color:var(--text)}.scan-result .result-icon{margin-bottom:16px;font-size:56px}.scan-result h2{letter-spacing:.05em;margin:0 0 8px;font-size:24px;font-weight:700}.scan-result .holder-name{color:var(--text);margin:0 0 8px;font-size:15px;font-weight:500}.scan-result .result-message{color:var(--text-muted);margin:0;font-size:14px}.scan-result .result-detail{color:var(--text-muted);margin:12px 0 0;font-size:13px}@media (width<=768px){.scan-result{padding:32px}.scan-result .result-icon{margin-bottom:12px;font-size:44px}.scan-result h2{font-size:20px}.scan-result p{font-size:14px}}.error-panel{background:var(--surface);border:2px solid #cf222e;border-radius:14px;flex-direction:column;align-items:center;gap:16px;width:100%;padding:48px;display:flex}.error-panel .error-icon{color:#cf222e;font-size:56px}.error-panel h2{color:var(--text);margin:0;font-size:16px;font-weight:600}.error-panel p{color:var(--text-muted);text-align:center;margin:0;font-size:14px}.error-panel .retry-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;margin-top:12px;padding:12px 24px;font-size:14px;font-weight:500;transition:all .2s}.error-panel .retry-btn:hover{background:var(--accent-light)}@keyframes fadeIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}*,:before,:after{box-sizing:border-box}html,body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#fff;background:#0b0d12;margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}body.scanner-route{-webkit-overflow-scrolling:touch;overflow:hidden auto}button{font-family:inherit}a{color:inherit;text-decoration:none}
