@font-face { font-family: "Novem"; src: url("novem.regular.ttf") format("truetype"); } @font-face { font-family: "Dited"; src: url("dited.regular.ttf") format("truetype"); } h1 { font-family: "Novem", sans-serif; letter-spacing: 10px; } nav ul li a { font-family: "Dited", sans-serif; letter-spacing: 2.5px; font-size: large; } .custom-checkbox { display: inline-block; position: relative; cursor: pointer; font-size: 14px; user-select: none; } .custom-checkbox input { position: absolute; opacity: 0; cursor: pointer; height: 0; width: 0; } .checkmark { height: 18px; width: 18px; background-color: #fff; border: 2px solid #d1d5db; border-radius: 4px; transition: all 0.2s ease; display: inline-block; margin-right: 8px; } .custom-checkbox:hover input ~ .checkmark { border-color: #6b7280; } .custom-checkbox input:checked ~ .checkmark { background-color: #6b7280; border-color: #6b7280; } .checkmark:after { content: ""; position: absolute; display: none; } .custom-checkbox input:checked ~ .checkmark:after { display: block; } .custom-checkbox .checkmark:after { left: 6.5px; top: 6px; width: 4px; height: 8px; border: solid white; border-width: 0 2px 2px 0; transform: rotate(45deg); } .auth-tab { font-family: "Dited", sans-serif; letter-spacing: 1.5px; } input:focus { transform: translateY(-1px); } button:disabled { opacity: 0.7; } #login-form, #register-form { animation: fadeIn 0.3s ease-in-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } .flex.justify-center.gap-4 button:hover { transform: translateY(-2px); } .shake { animation: shake 0.5s ease-in-out; } @keyframes shake { 0%, 100% { transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); } 20%, 40%, 60%, 80% { transform: translateX(5px); } } #req-length, #req-upper, #req-lower, #req-digit { transition: color 0.2s ease; } .req-icon { font-size: 10px; width: 12px; display: inline-block; } #login-form:not(.hidden), #register-form:not(.hidden) { animation: fadeIn 0.3s ease-in-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } #login-tab, #register-tab { font-family: "Dited", sans-serif; letter-spacing: 1.5px; cursor: pointer; } #user-dropdown { animation: dropdownFade 0.1s ease-out; } @keyframes dropdownFade { from { opacity: 0; transform: translateY(-5px); } to { opacity: 1; transform: translateY(0); } } #user-arrow.rotate-180 { transform: rotate(180deg); } .stat-number { font-variant-numeric: tabular-nums; } .stat-card { min-width: 140px; } @keyframes pulse-soft { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } .animate-pulse-soft { animation: pulse-soft 2s ease-in-out infinite; } #bookSvg { filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1)); } @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-fade-in-up { animation: fadeInUp 0.5s ease-out forwards; } .stat-card:hover svg { transform: scale(1.1); transition: transform 0.3s ease; } .stat-card svg { transition: transform 0.3s ease; } .gradient-text { background: linear-gradient(135deg, #374151 0%, #6b7280 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }