:root{ --1-color: #eee; --2-color: white; --3-color: #06aff2; --4-color: #ccc; --5-color: #666666; --6-color: red; --body-background: var(--1-color); --button-background: var(--1-color); --button-color: var(--3-color); --button-text: var(--2-color); --click-scale: 95%; --container-background: var(--2-color); --description-color: var(--5-color); --input-invalid: var(--6-color); --input-valid: var(--3-color); --language-border: var(--4-color); --language-position: 16px; --margin: 20px; --margin-left-back-button: 14px; --margin-left-right: 16px; --margin-right-toogle: 25px; --padding: 10px; --padding-header: 10px 0px; --padding-side: 0px 10px; --padding-instruction: 8%; --title-size: 22px; } /* imation apperance */ .slide-in-left { animation: slideInLeft 0.5s forwards; /* Hiệu ứng trượt vào từ trái */ } .slide-out-left { animation: slideOutLeft 0.5s forwards; /* Hiệu ứng trượt ra trái */ } .slide-in-right { animation: slideInRight 0.5s forwards; /* Hiệu ứng trượt vào từ phải */ } .slide-out-right { animation: slideOutRight 0.5s forwards; /* Hiệu ứng trượt ra phải */ } .fade-out { animation: fadeOut 0.3s forwards; } .fade-in { animation: fadeIn 0.3s forwards; } @keyframes slideInLeft { from { transform: translateX(-100%); /* Bắt đầu từ bên trái */ opacity: 0; /* Bắt đầu với độ mờ */ } to { transform: translateX(0); /* Kết thúc ở vị trí gốc */ opacity: 1; /* Hiển thị hoàn toàn */ } } @keyframes slideOutLeft { from { transform: translateX(0); /* Bắt đầu ở vị trí gốc */ opacity: 1; /* Hiển thị hoàn toàn */ } to { transform: translateX(-100%); /* Kết thúc ra ngoài bên trái */ opacity: 0; /* Mờ dần */ } } @keyframes slideInRight { from { transform: translateX(100%); /* Bắt đầu từ bên phải */ opacity: 0; /* Bắt đầu với độ mờ */ } to { transform: translateX(0); /* Kết thúc ở vị trí gốc */ opacity: 1; /* Hiển thị hoàn toàn */ } } @keyframes slideOutRight { from { transform: translateX(0); /* Bắt đầu ở vị trí gốc */ opacity: 1; /* Hiển thị hoàn toàn */ } to { transform: translateX(100%); /* Kết thúc ra ngoài bên phải */ opacity: 0; /* Mờ dần */ } } @keyframes fadeOut { from { transform: translateX(0); opacity: 1; /* Bắt đầu với độ mờ */ } to { transform: translateX(0); opacity: 0; /* Hiển thị hoàn toàn */ } } @keyframes fadeIn { from { transform: translateX(0); opacity: 0; /* Bắt đầu với độ mờ */ } to { transform: translateX(0); opacity: 1; /* Hiển thị hoàn toàn */ } } /* general setting */ body { font-family: Arial, sans-serif; text-align: center; background-color: var(--body-background); } .container { max-width: 400px; margin: auto; padding: 0px 0px var(--margin) 0px; background: var(--container-background); border-radius: 16px; position: relative; } .options{ margin: var(--margin); } .link { color: var(--button-color); padding: var(--padding-side); cursor: pointer; display: inline-block; } .link:active { scale: var(--click-scale); } .language { color: var(--button-color); position: absolute; top: var(--language-position); right: var(--language-position); cursor: pointer; } .language:active { scale: var(--click-scale); } .welcome-text { font-weight: bold; font-size: var(--title-size); color: var(--description-color); margin: var(--margin) 0 var(--padding); height: 50px; } .instruction { padding: var(--padding-instruction); } button { background-color: var(--button-color); color: var(--button-text); padding: var(--padding) var(--margin); border: none; border-radius: 20px; margin: auto; cursor: pointer; display: block; font-size: 16px; } button:active { scale: var(--click-scale); } input { width: 90%; padding: var(--padding); margin: var(--padding-header); /* border: 1px solid var(--body-background); */ border-radius: 5px; box-sizing: border-box; } input[name="password"] { padding-right: 40px; } input:valid { border: 2px solid var(--input-valid); /* Viền màu xanh cho trường hợp hợp lệ */ } input:invalid { border: 2px solid var(--input-invalid); /* Viền màu đỏ cho trường hợp không hợp lệ */ } input:focus:valid { outline: none; /* Bỏ viền ngoài khi trường hợp lệ được chọn */ box-shadow: 0 0 5px var(--input-valid); /* Thêm bóng xanh cho trường hợp hợp lệ */ } input:focus:invalid { outline: none; /* Bỏ viền ngoài khi trường không hợp lệ được chọn */ box-shadow: 0 0 5px var(--input-invalid); /* Thêm bóng đỏ cho trường không hợp lệ */ } .password-container { position: relative; } #toggle-password { position: absolute; right: var(--margin-right-toogle); /* top: 48%; */ top: 50%; transform: translateY(-50%); cursor: pointer; color: var(--button-background); /* font-size: 30px; */ font-size: 20px; width: 30px; } #toggle-password:hover { color: var(--button-color); } .or-section { margin: 20px auto; font-size: 14px; color: var(--description-color); display: flex; justify-content: center; align-items: center; width: 90%; max-width: 400px; } .or-section::before, .or-section::after { content: ""; flex: 1; border-bottom: 1px solid var(--body-background); } .or-section:not(:empty)::before { margin-right: var(--padding); } .or-section:not(:empty)::after { margin-left: var(--padding); } .social-btn { width: 40px; padding: 0 var(--padding); cursor: pointer; } .social-btn:active { scale: var(--click-scale); } /* Header Screen */ .header { display: flex; padding: var(--padding); align-items: center; background-color: var(--button-color); color: var(--button-text); border-radius: 16px 16px 0px 0px; } .back-button { height: 30px; cursor: pointer; position: relative; left: var(--padding); } .back-button:active { scale: var(--click-scale); } .header-title { font-size: var(--title-size); margin: 0 auto; padding: var(--padding); text-align: center; } .white-header { display: flex; padding: var(--padding-header); align-items: center; background-color: var(--container-background); border-radius: 16px 16px 0px 0px; } .back-blue-button { height: 30px; cursor: pointer; position: relative; left: var(--margin-left-back-button); } .back-blue-button:active { scale: var(--click-scale); } /* Flash Screen */ #welcome-image { margin-top: var(--margin); height: 250px; } #welcome-text { font-weight: bold; margin: var(--margin) 0 var(--padding); height: 30px; } #description { color: var(--description-color); margin-bottom: var(--margin); height: 50px; } .pagination { display: flex; justify-content: center; margin-bottom: var(--margin); } .pagination-dot { width: 9px; height: 9px; border-radius: 50%; background-color: var(--button-background); margin: 0 4px; cursor: pointer; } .pagination-dot:active{ scale: 80%; } .pagination-dot.active { background-color: var(--button-color); } /* Language List */ .language-list { list-style-type: none; padding: 0; margin: 0; } .language-item { display: flex; align-items: center; padding: var(--margin-left-right); border-bottom: 1px solid var(--language-border); cursor: pointer; } .flag { height: 60px; margin-right: var(--margin); border-radius: 2px; } .language-item:hover { background-color: var(--language-border); border-radius: 0px 0px 16px 16px; } .language-info { flex: 1; text-align: left; } .language-name { height: 16px; } .language-subtext { margin-top: var(--padding); color: var(--description-color); } .checkmark { height: 20px; } /* Login screen */ .logo-welcome { width: 90px; }