.auth-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f4f7fb;padding:24px}.auth-card{background:#fff;border:1px solid #dbe3ec;border-radius:16px;box-shadow:0 8px 32px #1c273314;width:100%;max-width:420px;padding:40px;margin:0 auto}.auth-header{text-align:center;margin-bottom:28px}.auth-brand{font-size:28px;font-weight:700;letter-spacing:.02em;color:#1c2733;margin-bottom:16px}.auth-brand span{color:#1a6fd1}.auth-badge{display:inline-block;margin:0 0 12px;padding:3px 14px;border-radius:999px;font-size:13px;font-weight:700;letter-spacing:.05em}.auth-badge-customer{background:#e6f0fb;color:#1a6fd1}.auth-badge-admin{background:#1c2733;color:#fff}.auth-admin{background:#1c2733}.auth-admin .auth-card{border:2px solid #7bb6f5;box-shadow:0 8px 32px #00000059}.auth-header h2{color:#1c2733;margin:0 0 6px;font-size:20px;font-weight:700}.auth-header p{color:#5b6b7c;margin:0;font-size:14px}.auth-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-weight:600;color:#1c2733;font-size:14px}.form-group input{padding:12px 14px;border:1px solid #c3cfdc;border-radius:10px;background:#fff;color:#1c2733;font-size:16px;font-family:inherit;transition:border-color .2s ease,box-shadow .2s ease}.form-group input:focus{outline:none;border-color:#1a6fd1;box-shadow:0 0 0 3px #1a6fd12e}.form-group input:disabled{background-color:#f4f7fb;cursor:not-allowed}.form-group input::placeholder{color:#8a98a8}.error-message{background:#fff5f5;border:1px solid #feb2b2;color:#c53030;padding:12px 16px;border-radius:10px;font-size:14px}.success-message{background:#f0fff4;border:1px solid #9ae6b4;color:#2f855a;padding:12px 16px;border-radius:10px;font-size:14px}.auth-button{background:#1a6fd1;color:#fff;border:1px solid #1a6fd1;border-radius:999px;padding:13px 20px;font-size:16px;font-weight:700;font-family:inherit;cursor:pointer;transition:background .2s ease,border-color .2s ease;margin-top:6px}.auth-button:hover:not(:disabled){background:#1558a8;border-color:#1558a8}.auth-button:focus-visible{outline:3px solid rgba(26,111,209,.35);outline-offset:2px}.auth-button:disabled{opacity:.55;cursor:not-allowed}.auth-button.loading{position:relative;overflow:hidden}.auth-button.loading:after{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 1.5s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.auth-footer{text-align:center;margin-top:28px;padding-top:20px;border-top:1px solid #dbe3ec}.auth-footer p{color:#5b6b7c;font-size:14px;margin:0}.auth-link{color:#1a6fd1;text-decoration:none;font-weight:600;transition:color .2s ease}.auth-link:hover{color:#1558a8;text-decoration:underline}@media(max-width:480px){.auth-container{padding:32px 12px 12px;align-items:flex-start}.auth-card{padding:28px 20px}}.app-token-management{padding:0;max-width:1200px;margin:0 auto}.header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #dbe3ec}.header h2{margin:0 0 8px;color:#1c2733;font-size:1.5rem;font-weight:700}.header-description{margin:0;color:#666;font-size:14px;line-height:1.4;max-width:600px}.dialog-description{margin:0 0 20px;color:#666;font-size:14px;line-height:1.5}.empty-state p{margin:0 0 8px}.empty-hint{font-size:13px;color:#999}.dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.dialog{background:#fff;border-radius:8px;padding:24px;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 10px 25px #0003}.dialog h3{margin:0 0 20px;color:#333;font-size:1.4em}@media(max-width:768px){.app-token-management{padding:15px}.header{flex-direction:column;align-items:flex-start;gap:15px}.token-table{font-size:13px}.token-table th,.token-table td{padding:8px 12px}.dialog{width:95%;margin:20px}.dialog-buttons{flex-direction:column}.token-display{flex-direction:column;align-items:stretch;gap:10px}.token-display code{word-break:break-all}}.user-token-dialog{background:#fff;border-radius:8px;max-width:900px;width:95%;max-height:90vh;overflow:hidden;box-shadow:0 10px 25px #0003;display:flex;flex-direction:column}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #e9ecef;background-color:#f8f9fa}.dialog-header h2{margin:0;color:#333;font-size:1.4em}.close-button{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s ease}.close-button:hover{background-color:#e9ecef}.dialog-content{padding:20px 24px;overflow-y:auto;flex:1}.action-bar{display:flex;justify-content:flex-end;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #e9ecef}.btn{padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex;align-items:center;gap:5px;transition:all .2s ease}.btn:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.btn-primary{background-color:#1a6fd1;color:#fff}.btn-primary:hover{background-color:#1558a8}.btn-secondary{background-color:#6c757d;color:#fff}.btn-secondary:hover{background-color:#545b62}.btn-danger{background-color:#dc3545;color:#fff}.btn-danger:hover{background-color:#c82333}.btn-copy{background-color:#28a745;color:#fff;font-size:12px;padding:4px 8px}.btn-copy:hover{background-color:#218838}.btn-sm{padding:4px 8px;font-size:12px}.error-message{background-color:#f8d7da;color:#721c24;padding:12px 16px;border-radius:4px;margin-bottom:20px;display:flex;justify-content:space-between;align-items:center;border:1px solid #f5c6cb}.error-close{background:none;border:none;color:#721c24;font-size:18px;cursor:pointer;padding:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center}.created-token-alert{background-color:#d1ecf1;color:#0c5460;padding:20px;border-radius:8px;margin-bottom:20px;border:1px solid #bee5eb}.created-token-alert h3{margin:0 0 15px;color:#0c5460;font-size:1.2em}.token-display{background-color:#fff;padding:15px;border-radius:4px;margin:15px 0;display:flex;align-items:center;gap:10px;border:1px solid #bee5eb}.token-display code{flex:1;background:none;color:#333;font-family:Courier New,monospace;font-size:14px;word-break:break-all;padding:0}.warning{margin:10px 0;font-weight:500;color:#856404}.loading{text-align:center;padding:40px;color:#666;font-style:italic}.token-list{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.token-table{width:100%;border-collapse:collapse}.token-table thead{background-color:#f8f9fa}.token-table th,.token-table td{padding:12px 16px;text-align:left;border-bottom:1px solid #e9ecef}.token-table th{font-weight:600;color:#495057;font-size:14px}.token-table tbody tr:hover{background-color:#f8f9fa}.token-name{font-weight:500;color:#333}.badge{padding:4px 8px;border-radius:12px;font-size:12px;font-weight:500;text-transform:uppercase}.badge-active{background-color:#d4edda;color:#155724}.badge-inactive{background-color:#f8d7da;color:#721c24}.badge-expired{background-color:#fff3cd;color:#856404}.empty-message{text-align:center;color:#6c757d;font-style:italic;padding:40px!important}.empty-state p{margin:0}.create-dialog-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#0000004d;display:flex;align-items:center;justify-content:center;z-index:100}.create-dialog{background:#fff;border-radius:8px;padding:24px;max-width:400px;width:90%;box-shadow:0 5px 15px #0003}.create-dialog h3{margin:0 0 20px;color:#333;font-size:1.2em}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:5px;font-weight:500;color:#333}.form-control{width:100%;padding:8px 12px;border:1px solid #ced4da;border-radius:4px;font-size:14px;box-sizing:border-box}.form-control:focus{outline:none;border-color:#1a6fd1;box-shadow:0 0 0 2px #007bff40}.form-help{display:block;margin-top:5px;color:#6c757d;font-size:12px}.dialog-buttons{display:flex;gap:10px;justify-content:flex-end;margin-top:30px;padding-top:20px;border-top:1px solid #e9ecef}@media(max-width:768px){.user-token-dialog{width:98%;margin:10px}.dialog-header,.dialog-content{padding:15px 20px}.token-table{font-size:13px}.token-table th,.token-table td{padding:8px 12px}.create-dialog{width:95%}.dialog-buttons{flex-direction:column}.token-display{flex-direction:column;align-items:stretch;gap:10px}}@media(max-width:480px){.token-table thead{display:none}.token-table,.token-table tbody,.token-table tr,.token-table td{display:block}.token-table tr{border:1px solid #e9ecef;margin-bottom:10px;border-radius:4px;padding:10px}.token-table td{border:none;position:relative;padding:5px 0 5px 120px}.token-table td:before{content:attr(data-label);position:absolute;left:0;width:110px;font-weight:600;color:#495057}}.token-password{min-width:200px}.revealed-token{display:flex;align-items:center;gap:8px;padding:4px 8px;background-color:#f8f9fa;border-radius:4px;border:1px solid #dee2e6}.token-value{font-family:Consolas,Monaco,Courier New,monospace;font-size:.9em;color:#495057;background-color:#fff;padding:2px 6px;border-radius:3px;border:1px solid #ced4da;word-break:break-all;max-width:200px;overflow:hidden}.btn-xs{padding:2px 6px;font-size:.8em;border:none;background:none;cursor:pointer}.btn-outline{background-color:transparent;color:#1558a8;border:1px solid #1558a8;transition:all .2s ease}.btn-outline:hover:not(:disabled){background-color:#1558a8;color:#fff}.btn-outline:disabled{opacity:.6;cursor:not-allowed;color:#6c757d;border-color:#6c757d}.watchlog-container{padding:0;margin:0;width:100%}.watchlog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:12px}.watchlog-header h2{margin:0;color:#1c2733;font-size:24px;font-weight:700}.controls,.filter-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.username-filter,.date-filter{position:relative;display:flex;align-items:center}.filter-input{padding:6px 30px 6px 10px;border:1px solid #c3cfdc;border-radius:8px;font-size:14px;width:200px;background:#fff;transition:border-color .2s}.date-input{width:160px}.filter-input:focus{outline:none;border-color:#1a6fd1;box-shadow:0 0 0 3px #1a6fd12e}.clear-filter-btn{position:absolute;right:5px;background:none;border:none;cursor:pointer;color:#666;font-size:16px;padding:2px;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.clear-filter-btn:hover{background-color:#e0e0e0;color:#333}.refresh-btn{background-color:#1a6fd1;color:#fff;border:none;padding:8px 18px;border-radius:999px;cursor:pointer;font-size:14px;font-weight:600;transition:background-color .2s}.refresh-btn:hover{background-color:#1558a8}.limit-select{padding:6px 10px;border:1px solid #c3cfdc;border-radius:8px;background:#fff;font-size:14px}.pagination{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding:10px 0;border-bottom:1px solid #dbe3ec;flex-wrap:wrap;gap:8px}.pagination-btn{background-color:#1a6fd1;color:#fff;border:none;padding:8px 18px;border-radius:999px;cursor:pointer;font-size:14px;font-weight:600;transition:background-color .2s}.pagination-btn:hover:not(:disabled){background-color:#1558a8}.pagination-btn:disabled{background-color:#c3cfdc;cursor:not-allowed}.pagination-info{font-size:14px;color:#5b6b7c}.watchlog-table-container{overflow-x:auto;border-radius:12px;border:1px solid #dbe3ec;background:#fff}.watchlog-table{width:100%;min-width:1100px;border-collapse:collapse;font-size:14px;table-layout:fixed}.watchlog-table th:nth-child(1),.watchlog-table td:nth-child(1){width:150px}.watchlog-table th:nth-child(2),.watchlog-table td:nth-child(2){width:130px}.watchlog-table th:nth-child(3),.watchlog-table td:nth-child(3){width:130px}.watchlog-table th:nth-child(4),.watchlog-table td:nth-child(4){width:120px}.watchlog-table th:nth-child(6),.watchlog-table td:nth-child(6){width:100px}.watchlog-table th:nth-child(7),.watchlog-table td:nth-child(7),.watchlog-table th:nth-child(8),.watchlog-table td:nth-child(8){width:160px}.watchlog-table th:nth-child(9),.watchlog-table td:nth-child(9){width:60px}.watchlog-table th:nth-child(10),.watchlog-table td:nth-child(10){width:110px}.watchlog-table th{background-color:#f4f7fb;padding:12px 10px;text-align:left;font-weight:600;color:#1c2733;border-bottom:1px solid #dbe3ec;white-space:nowrap}.watchlog-table td{padding:10px;border-bottom:1px solid #e8eef5;vertical-align:top;word-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.watchlog-table tr:hover{background-color:#f8f9fa}.watchlog-table tr:nth-child(2n){background-color:#fff}.watchlog-table tr:nth-child(odd){background-color:#f9f9f9}.watchlog-table tr:hover{background-color:#e8f4f8!important}.no-data{text-align:center;color:#666;font-style:italic;padding:40px!important}.loading{text-align:center;padding:40px;font-size:16px;color:#666}.error{text-align:center;padding:40px;color:#d32f2f;background-color:#ffebee;border-radius:4px;margin:20px 0}.error .refresh-btn{margin-left:10px;background-color:#d32f2f}.error .refresh-btn:hover{background-color:#c62828}@media(max-width:768px){.watchlog-container{padding:0}.watchlog-header{flex-direction:column;align-items:flex-start;gap:10px}.controls{width:100%;justify-content:space-between;flex-wrap:wrap}.filter-controls{width:100%;margin-bottom:10px;flex-direction:column;gap:8px}.filter-input{width:100%;min-width:150px}.date-input{width:100%}.pagination{flex-direction:column;gap:10px}.watchlog-table{font-size:12px}.watchlog-table th,.watchlog-table td{padding:6px 4px}}@media(max-width:1399px){.watchlog-table{min-width:0}.watchlog-table th:nth-child(n+7),.watchlog-table td:nth-child(n+7){display:none}}@media(max-width:640px){.watchlog-table th:nth-child(3),.watchlog-table td:nth-child(3),.watchlog-table th:nth-child(4),.watchlog-table td:nth-child(4){display:none}}.image-link{display:inline-block;color:#1976d2;text-decoration:none;padding:4px 8px;border-radius:4px;font-size:12px;border:1px solid #1976d2;transition:all .2s ease;margin-top:4px;background:transparent;cursor:pointer}.image-link:hover{background-color:#1976d2;color:#fff;text-decoration:none}.image-link:visited{color:#1976d2}.dialog-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#000c;display:flex;justify-content:center;align-items:center;z-index:1000}.dialog-content{background:#fff;border-radius:8px;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0000004d}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-radius:8px 8px 0 0}.dialog-header h3{margin:0;color:#333;font-size:18px}.close-button{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s}.close-button:hover{background-color:#e0e0e0;color:#333}.dialog-body{padding:20px;display:flex;justify-content:center;align-items:center;max-height:calc(90vh - 80px);overflow:auto}.dialog-image{max-width:100%;max-height:100%;height:auto;width:auto;border-radius:4px;box-shadow:0 2px 8px #0000001a}.dialog-loading{padding:40px;text-align:center;color:#666;font-size:16px}.dialog-error{padding:40px;text-align:center;color:#d32f2f;font-size:16px;background-color:#ffebee;border-radius:4px;border:1px solid #ffcdd2}.image-link:disabled{opacity:.6;cursor:not-allowed;background-color:#f5f5f5;color:#666;border-color:#ddd}.image-link:disabled:hover{background-color:#f5f5f5;color:#666}.image-mode-toggle{display:flex;align-items:center;gap:5px;font-size:14px;color:#333;cursor:pointer}.image-mode-toggle input[type=checkbox]{margin:0}.image-preview-cell{text-align:center;padding:8px;width:80px;max-width:80px}.thumbnail-image{max-width:60px;max-height:45px;border-radius:4px;cursor:pointer;transition:transform .2s;border:1px solid #ddd}.thumbnail-image:hover{transform:scale(1.1)}@media(max-width:768px){.dialog-content{margin:20px;max-width:calc(100vw - 40px);max-height:calc(100vh - 40px)}.dialog-header{padding:12px 16px}.dialog-header h3{font-size:16px}.dialog-body{padding:16px}}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}
