* { margin: 0; padding: 0; box-sizing: border-box; user-select: none; } html, body { height: 100%; font-family: Arial, Helvetica, sans-serif; line-height: 1.5; -webkit-font-smoothing: antialiased; } img, picture, video, canvas, svg { display: block; max-width: 100%; } button, input, select, textarea { font: inherit; } a { color: inherit; text-decoration: none; } ul, ol { list-style: none; } /* General Body Styling */ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background-color: #f8f9fa; color: #333; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; box-sizing: border-box; } /* Main Container */ .container { background-color: #ffffff; width: 100%; height: 100%; position: relative; } /* Header Section */ .header-face-check { display: flex; align-items: center; justify-content: space-between; gap: 12px; text-align: left; border-bottom: 1px solid #e2e8f0; padding: 15px 24px; } .header-placeholder { width: 120px; } .header-actions { display: flex; align-items: center; gap: 12px; } .btn-logout { width: auto; padding: 8px 14px; background-color: #f1f3f5; color: #374151; border: 1px solid #d6d9de; border-radius: 8px; } .btn-logout:hover { background-color: #e9ecef; } .title-header-face-check { font-size: 28px; font-weight: 600; } .language-switcher { display: flex; align-items: center; gap: 8px; } .language-label { font-size: 14px; color: #454545; font-weight: 600; white-space: nowrap; } .language-select { padding: 6px 34px 6px 10px; border: 1px solid #ced4da; border-radius: 6px; background-color: #ffffff; color: #333; cursor: pointer; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23444' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; background-size: 14px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06); transition: border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease; } .language-select:focus { border-color: #fd7e14; outline: none; } .language-select:hover { border-color: #b6bec8; background-color: #fdfdfd; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08); } .language-select option { padding: 8px 10px; color: #1f2937; background-color: #ffffff; font-weight: 500; } .language-select option:checked { background-color: #fff4e6; color: #d35400; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .language-dropdown { position: relative; min-width: 170px; } .language-toggle { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; padding: 6px 12px; background: #ffffff; border: 1px solid #ced4da; border-radius: 8px; color: #1f2937; font-weight: 600; cursor: pointer; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06); transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.15s ease; } .language-toggle:hover { border-color: #b6bec8; box-shadow: 0 6px 14px rgba(0, 0, 0, 0.08); transform: translateY(-1px); } .language-toggle:focus-visible { outline: 2px solid #fd7e14; outline-offset: 2px; } .language-chevron { width: 0; height: 0; border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 6px solid #4b5563; transition: transform 0.2s ease; } .language-dropdown.open .language-chevron { transform: rotate(180deg); } .language-options { position: absolute; top: calc(100% + 8px); right: 0; width: 220px; background: #ffffff; border: 1px solid #d7dce3; border-radius: 10px; box-shadow: 0 12px 30px rgba(0, 0, 0, 0.12); padding: 6px; display: none; flex-direction: column; gap: 4px; z-index: 20; } .language-dropdown.open .language-options { display: flex; } .language-option { padding: 10px 12px; border-radius: 8px; cursor: pointer; font-weight: 600; color: #1f2937; display: flex; align-items: center; justify-content: space-between; transition: background-color 0.15s ease, color 0.15s ease; } .language-option:hover { background-color: #f5f7fb; } .language-option.active { background-color: #fff4e6; color: #d35400; } /* Main Content Layout */ .main-content { display: flex; } .description-upload-section { color: #6c757d; padding-bottom: 4px; } /* Upload Section Styling */ .upload-section { display: flex; flex-direction: column; width: 25%; height: calc(100vh - 73px); } .wrapper-upload-box { flex-grow: 1; overflow: scroll; } .upload-box { padding: 1rem; display: flex; flex-direction: column; } .upload-box > p { font-size: 18px; font-weight: 600; color: #454545; margin-bottom: 12px; } .drop-zone { border: 2px dashed #ced4da; border-radius: 8px; padding: 24px 4px; text-align: center; cursor: pointer; transition: background-color 0.2s ease, border-color 0.2s ease; flex-grow: 1; display: flex; flex-direction: column; justify-content: center; align-items: center; } .drop-zone:hover { background-color: #f8f9fa; border-color: #adb5bd; } .drop-zone.drag-over { background-color: #e3f2fd; border-color: #2196f3; } .drop-zone-icon { width: 48px; height: 48px; color: #6c757d; margin-bottom: 1rem; } .drop-zone p { margin: 0.25rem 0; font-weight: 500; } .required-note { margin-top: 6px; color: #d14343; font-weight: 600; font-size: 13px; } .drop-zone span { font-size: 16px; font-weight: 700; line-height: 22px; color: #fd7e14; } .wrapper-upload { display: flex; flex-direction: column; align-items: center; justify-content: center; } .list-file { display: flex; flex-direction: column; gap: 12px; padding: 0 1rem 1rem 1rem; } .file-item { display: flex; align-items: center; gap: 8px; padding: 8px 16px; border: 1px solid #ced4da; border-radius: 16px; cursor: default; } .file-item .file-icon { display: inline-block; width: 40px; height: 40px; flex-shrink: 0; } .file-item .file-name { flex-grow: 1; text-decoration: underline; font-weight: 500; font-size: 16px; line-height: 22px; display: inline-block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; cursor: pointer; transition: opacity 0.2s ease; } .file-item .file-name:hover { opacity: 0.8; } .file-item .file-thumbnail { display: inline-block; width: 40px; height: 40px; border-radius: 12px; flex-shrink: 0; background-color: #f1f3f5; overflow: hidden; } .file-item .file-thumbnail-image { object-fit: cover; display: inline-block; } .file-item .file-thumbnail-video { display: inline-flex; align-items: center; justify-content: center; position: relative; background-color: #10151a; } .file-item .file-thumbnail-video video { width: 100%; height: 100%; object-fit: cover; pointer-events: none; } .file-item .file-thumbnail-video::before { content: ''; position: absolute; width: 28px; height: 28px; border-radius: 50%; background: rgba(0, 0, 0, 0.45); backdrop-filter: blur(2px); } .file-item .file-thumbnail-video::after { content: ''; position: absolute; width: 0; height: 0; border-left: 10px solid #ffffff; border-top: 7px solid transparent; border-bottom: 7px solid transparent; margin-left: 3px; } .file-item .preview { width: 24px; height: 24px; flex-shrink: 0; cursor: pointer; } .file-item .preview:hover { opacity: 0.8; } .file-item .file-remove { cursor: pointer; display: inline-block; width: 24px; height: 24px; flex-shrink: 0; } #file-input { display: none; } /* Button Styling */ .button-group { display: flex; gap: 0.75rem; padding: 20px 24px; border-top: 1px solid #e2e8f0; } .btn { padding: 0.75rem 1.5rem; border: none; border-radius: 6px; font-size: 1rem; font-weight: 600; cursor: pointer; transition: background-color 0.2s ease; width: 50%; } .btn-clear { background-color: #e9ecef; color: #495057; border: 1px solid #dee2e6; } .btn-clear:hover { background-color: #dee2e6; } .wrapper-btn-save { display: flex; justify-content: center; align-items: center; width: 100%; background-color: #ffffff; border-top: 1px solid #e2e8f0; padding: 20px 24px; } .btn-submit { background-color: #fd7e14; color: #ffffff; } .btn-submit:hover { background-color: #f96d00; } /* Output Section Styling */ .output-section { flex: 1; display: flex; flex-direction: column; border-left: 1px solid #dee2e6; border-right: 1px solid #dee2e6; height: calc(100vh - 73px); background-color: #f5f5f5; } .output-section label { font-weight: 600; display: block; padding-left: 1rem; } .output-wrapper { position: relative; width: 100%; flex: 1 1; padding: 1rem; overflow: auto; } .wrapper-loading { position: absolute; top: 50%; left: 50%; } .output-face-check { position: relative; flex-grow: 1; width: 100%; height: 100%; padding: 1rem; border: 1px solid #ced4da; border-radius: 8px; resize: none; font-family: inherit; font-size: 1rem; box-sizing: border-box; background-color: #ffffff; } .btn-save { background-color: #e9ecef; color: #495057; border: 1px solid #dee2e6; align-self: flex-start; /* Align to the left */ width: 300px; } .btn-save:hover { background-color: #dee2e6; } .btn-save.active { background-color: #fd7e14; color: #ffffff; } .btn-save.active:hover { background-color: #f96d00; } .btn-disabled { cursor: not-allowed !important; } .display-none { display: none !important; } .wrapper-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); display: none; justify-content: center; align-items: center; z-index: 1000; } .modal { display: flex; gap: 24px; flex-direction: column; justify-content: center; align-items: center; padding: 12px 16px 24px 16px; background: white; border-radius: 16px; width: 700px; } .header-modal { /* height: 40px; */ width: 100%; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #eef1f4; } .header-modal .title { flex: 1; color: #454545; font-weight: 700; font-size: 16px; line-height: 22px; } .header-modal .close { height: 40px; width: 40px; display: block; cursor: pointer; } .content-modal { width: 100%; max-height: 80vh; overflow: auto; text-align: center; } .content-modal img, .content-modal video { width: 100%; height: auto; object-fit: cover; } .content-modal > pre { text-align: left; } .modal-body-text { font-size: 15px; color: #1f2937; line-height: 1.6; margin-bottom: 12px; } .modal-actions { display: flex; justify-content: end; gap: 12px; margin-top: 8px; } .w-fit { width: fit-content; } .line { width: 100%; height: 1px; background-color: #e9e9e9; } .menu { display: flex; padding-top: 12px; border-bottom: 1px solid #e2e8f0; background-color: #ffffff; overflow: auto; } .menu .item { flex-shrink: 0; padding: 8px 16px; cursor: pointer; border-bottom: 2px solid #cbd5e1; font-weight: 600; font-size: 14px; line-height: 20px; color: #454545; white-space: normal; overflow: hidden; } .menu .item:hover { border-bottom: 2px solid #fd7e14; } .menu .item.no-hover { pointer-events: none; } .menu .item.active { border-bottom: 2px solid #fd7e14; } /* Responsive Design for smaller screens */ @media (max-width: 768px) { .main-content { flex-direction: column; } body { padding: 1rem; } .container { padding: 1.5rem; } .upload-section { width: 100%; } } @keyframes l2 { 100% { transform: rotate(calc(var(--s, 1) * 1turn)); } } .scroll-box { overflow: auto; /* scrollbar-width: none; */ -ms-overflow-style: none; } .scroll-box::-webkit-scrollbar { width: 0; height: 0; } .opacity-50 { opacity: 0.5; } .wrapper-status-face-check { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: #454545a8; display: flex; justify-content: center; align-items: center; } .status-face-check { display: flex; flex-direction: column; gap: 16px; width: 360px; color: #ffffff; } .header-status-face-check { display: flex; flex-direction: column; gap: 12px; } .title-status-face-check { display: flex; justify-content: space-between; } .step { font-weight: 600; font-size: 16px; } .wrapper-processing { width: 100%; height: 12px; border-radius: 1234px; background-color: #ffffff4d; } .processing { height: 100%; border-radius: 1234px; background-color: #4bed73; width: 30%; transition: width 0.3s ease; } .body-status-face-check { display: flex; flex-direction: column; gap: 12px; } .item-status-face-check { display: flex; gap: 8px; padding-left: 12px; } .content-status-face-check { flex: 1; display: flex; flex-direction: column; gap: 4px; } .name-service { font-size: 14px; font-weight: 500; line-height: 20px; } .status-service { font-size: 14px; font-weight: 400; line-height: 100%; } .wrapper-processing-item { width: 100%; height: 8px; border-radius: 1234px; background-color: #ffffff4d; overflow: hidden; position: relative; } .processing-item { position: absolute; top: 0; left: 0; height: 100%; border-radius: inherit; background-color: #fd7e14; } .pt-0 { padding-top: 0; } .mb-4 { margin-bottom: 1rem; } .pointer { cursor: pointer; } .loader { position: relative; width: 100%; height: 8px; border-radius: 1234px; background: #d6cccc; overflow: hidden; } .loader::before { content: ''; position: absolute; top: 0; left: -50%; width: 50%; height: 100%; background: #fd7e14; border-radius: inherit; animation: loading 2s infinite linear; } @keyframes loading { 0% { left: -50%; } 100% { left: 100%; } } .status-service.processing-dots .dots::after { content: ''; animation: dots 1.5s steps(4, end) infinite; } @keyframes dots { 0% { content: ''; } 25% { content: '.'; } 50% { content: '..'; } 75% { content: '...'; } 100% { content: ''; } } .json-box { background-color: #e9ecef; border-radius: 6px; padding: 16px 20px; font-family: Consolas, monospace; font-size: 14px; line-height: 1.6; color: #333; white-space: pre; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05); text-align: left; } .note { margin-bottom: 12px; font-family: Arial, sans-serif; font-size: 14px; color: #444; } .image-bg { color: #176ebf; text-decoration: underline; cursor: pointer; } .image-bg:hover { opacity: 0.8; } .whitespace-pre-line { white-space: pre-line; } p { overflow-wrap: anywhere; } .live-chat { display: flex; gap: 10px; align-items: center; position: absolute; bottom: 20px; right: 50px; border-radius: 1234px; padding: 12px 20px; background-color: #28a745; color: #ffffff; cursor: pointer; box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15); z-index: 999; } .live-chat:hover { opacity: 0.8; } .live-chat-text { display: flex; align-items: center; white-space: nowrap; font-weight: 600; } .feedback { display: flex; flex-direction: column; width: 25%; height: calc(100vh - 73px); } .feedback .header-feedback { height: 51px; display: flex; justify-content: space-between; gap: 10px; align-items: center; padding-left: 16px; padding-right: 8px; border-bottom: 1px solid #e2e8f0; } .feedback .header-feedback .close-feedback { cursor: pointer; } .feedback .content-feedback { flex: 1 1; padding: 18px 12px; display: flex; flex-direction: column; gap: 24px; overflow: auto; } .content-feedback .question { display: flex; flex-direction: column; gap: 10px; } .content-feedback .question .textarea .textarea-label, .content-feedback .question .q-title { font-size: 16px; font-weight: 600; color: #454545; line-height: 18px; } .content-feedback .question .options { display: flex; flex-direction: column; gap: 12px; } .content-feedback .question .options .option { width: fit-content; } .content-feedback .question .options-stars { display: flex; gap: 12px; } .content-feedback .question .options .option .opt .option-text { line-height: 20px; } .content-feedback .question .options .option .opt { display: flex; gap: 8px; cursor: pointer; } .star { width: 32px; height: 32px; background: #e9ecef; cursor: pointer; clip-path: polygon( 50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35% ); } .options-stars .star.active { background: gold; } input[type='radio'] { display: none; } .radio { flex-shrink: 0; width: 20px; height: 20px; border: 2px solid #ced4da; border-radius: 50%; position: relative; cursor: cusror; } input[type='radio']:checked + .radio { border-color: #fd7e14; } input[type='radio']:checked + .radio::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 8px; height: 8px; background-color: #fd7e14; border-radius: 50%; } textarea { border-radius: 16px; padding: 16px; border: 1px solid #cbd5e1; } textarea:focus { outline: none; border-color: #fd7e14; } .feedback-textarea { width: 100%; border: 1px solid #dfe4ea; border-radius: 12px; padding: 12px 14px; background-color: #fbfcff; font-size: 15px; line-height: 1.5; color: #2f3845; transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease; } .feedback-textarea:focus { outline: none; border-color: #fd7e14; background-color: #ffffff; box-shadow: 0 0 0 3px rgba(253, 126, 20, 0.18); } .feedback-textarea::placeholder { color: #9ca3af; } .upload-box label .label { font-weight: 600; margin-bottom: 6px; color: #354052; } .feedback .footer-feedback { display: flex; justify-content: center; align-items: center; width: 100%; background-color: #ffffff; border-top: 1px solid #e2e8f0; padding: 20px 24px; } .feedback .footer-feedback .btn-feedback { background-color: #28a745; color: #ffffff; border: 1px solid transparent; } .feedback .footer-feedback .btn-feedback:hover { opacity: 0.8; } .feedback .header-feedback .content-header-feedback { font-size: 18px; font-weight: 600; color: #454545; } .shrink-0 { flex-shrink: 0; } .notification-content-feedback { display: flex; flex-direction: column; align-items: center; gap: 16px; padding: 24px 16px; } .notification-content-feedback .notification-message { font-size: 20px; line-height: 20px; font-weight: 600; color: #454545; } .flex { display: flex; } .flex-col { flex-direction: column; } .gap-6 { gap: 1.5rem; } .gap-2 { gap: 0.5rem; } .gap-3 { gap: 0.75rem; } .pr-4 { padding-right: 1rem; } .pl-4 { padding-left: 1rem; } .required { color: #de0b0b; } .label { font-size: 18px; font-weight: 600; color: #454545; margin-bottom: 12px; text-align: left; } /* Login Page */ .login-layout { position: relative; min-height: 100vh; width: 100%; display: flex; align-items: center; justify-content: center; padding: 24px; background: radial-gradient(circle at 20% 20%, #fff4e6, #f8f9fa 35%), radial-gradient(circle at 80% 0%, #e7f5ff, #f8f9fa 35%), #f8f9fa; } .login-language-switcher { position: absolute; top: 20px; right: 20px; display: flex; align-items: center; gap: 8px; } .login-card { width: min(420px, 100%); background: #ffffff; border-radius: 16px; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.08); padding: 28px; display: flex; flex-direction: column; gap: 18px; } .login-header h1 { font-size: 26px; font-weight: 700; color: #1f2933; } .login-contact { display: flex; align-items: center; gap: 10px; margin-top: 8px; padding: 10px 14px; border-radius: 12px; background: #f5f7fb; color: #1f2937; font-weight: 600; font-size: 14px; line-height: 1.5; border: 1px solid #e5e7eb; box-shadow: 0 10px 24px rgba(0, 0, 0, 0.05); flex-wrap: wrap; } .contact-email { display: inline-flex; align-items: center; padding: 6px 12px; border-radius: 999px; background: linear-gradient(135deg, #fff7ed, #ffe8d2); color: #b45309; font-weight: 700; border: 1px solid #fed7aa; white-space: nowrap; transition: box-shadow 0.2s ease, transform 0.1s ease, background-color 0.2s ease, border-color 0.2s ease; } .contact-email:hover { background: #ffe2c4; border-color: #fdba74; box-shadow: 0 10px 20px rgba(253, 126, 20, 0.25); transform: translateY(-1px); } .login-subtitle { margin-top: 6px; color: #52606d; line-height: 1.4; } .login-form { display: flex; flex-direction: column; gap: 10px; } .login-label { font-weight: 600; color: #374151; } .login-input { width: 100%; padding: 12px 14px; border: 1px solid #d1d5db; border-radius: 10px; background: #f9fafb; transition: border-color 0.2s ease, box-shadow 0.2s ease; } .login-input:focus { outline: none; border-color: #fd7e14; box-shadow: 0 0 0 3px rgba(253, 126, 20, 0.15); background: #ffffff; } .login-error { min-height: 20px; color: #d14343; font-weight: 600; } .login-submit { width: 100%; background: linear-gradient(90deg, #fd7e14, #ff9f43); color: #ffffff; border: none; border-radius: 12px; padding: 12px 16px; font-weight: 700; cursor: pointer; transition: transform 0.1s ease, box-shadow 0.2s ease; } .login-submit:hover { box-shadow: 0 10px 25px rgba(253, 126, 20, 0.28); } .login-submit:active { transform: translateY(1px); } .login-fake-accounts { background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 12px; padding: 14px; } .login-fake-accounts-title { font-weight: 700; margin-bottom: 8px; color: #1f2937; } .login-fake-accounts-list { display: flex; flex-direction: column; gap: 6px; font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; color: #334155; font-size: 14px; } .btn-logout { padding: 6px 10px; height: 38px; }