/* *========= Variables ======== */
:root {
   --primary-color: #228B22;
   --secondary-dark: #0F4F0F;
   --primary-light: #90EE90;
   --primary-soft: #F0FFF0;


   --accent-color: #FFD700;

   --transition: all 0.3s ease-in-out;
}


body,
html {
   height: 100%;
   margin: auto;
   text-wrap: pretty;
   background-color: var(--white-color);
   max-width: 1400px;
}

body {
   overflow-x: hidden;
}

/* *======== Components =========== */
/* Buttons */
.button {
   cursor: pointer;
   background-color: var(--primary-color);
   color: white;
   font-weight: 500;
   border-radius: 8px;
   outline: none;
   border: none;
   padding: 0.7rem 1rem !important;
   transition: var(--transition);
}

.button:hover {
   background-color: var(--white-color);
   color: var(--primary-color);
   outline: 1px solid var(--primary-color);
}

/* Info Alerts */
.info {
   border-left: 5px solid var(--primary-color);
   background-color: var(--primary-soft);
   border-radius: 0 !important;
   text-align: left;
   margin: 15px 0;
   padding: 10px 15px;
}

.info p,
.info a {
   margin-bottom: 5px;
}

/* *======== Reset & Base Styles =========== */

.hidden_result {
   display: none;
}

/* *======== Preloader =========== */
#preloader {
   position: fixed;
   top: 0;
   left: 0;
   width: 100%;
   height: 100%;
   background-color: var(--accent-color);
   display: flex;
   justify-content: center;
   align-items: center;
   z-index: 20000;
   transition: opacity 0.6s ease, visibility 0.6s ease;
}

#preloader.hidden {
   opacity: 0;
   visibility: hidden;
   pointer-events: none;
}

#preloader-logo {
   width: 150px;
   height: auto;
   animation: pulseFade 1.8s ease-in-out infinite;
}

@keyframes pulseFade {

   0%,
   100% {
      opacity: 0.4;
      transform: scale(1);
   }

   50% {
      opacity: 1;
      transform: scale(1.1);
   }
}


/* Hero Section */


.hero-container {
   width: 100%;
   height: 100%;
   background: #00000098;
   display: flex;
   justify-content: center;
   align-items: center;
}



/* *========= Point Calculator Form ========= */
.point_container {
   accent-color: var(--primary-color);
   padding: 15px;
   max-width: 800px;
   margin: 0 auto;
   /* background: var(--primary-soft); */

}

.point_container h1 {
   text-align: center;
   margin-bottom: 20px;
}

.point_container form {
   border-radius: 8px;
   box-shadow: var(--shadow-sm);
   background-color: white;
   padding: 15px 20px;
}

/* Fieldset Styles */
.point_container fieldset {
   background-color: rgba(133, 131, 131, 0.03);
   border-radius: 8px;
   border: 1px solid var(--primary-light);
   padding: 20px 15px 15px;
   margin-bottom: 25px;
   position: relative;
}

/* Form Elements */
legend {
   font-size: 1.2rem;
   font-weight: 500;
   color: white;
   padding: 8px 16px;
   background-color: var(--primary-color);
   border-radius: 8px;
   text-align: center;
}

select {
   font-style: italic;
}

.point_container label {
   display: inline-block;
   margin: 8px 0;
   font-weight: 500;
   color: black;
}

.point_container div.sitting {
   display: flex;
   justify-content: flex-start;
   flex-wrap: wrap;
   margin: 15px 0;
   gap: 20px;
}

.point_container div.sitting label {
   margin: 0;
   padding: 0;
   cursor: pointer;
}

.point_container input[type="radio"] {
   transform: scale(1.5);
   margin-right: 10px;
   cursor: pointer;
   transition: var(--transition);
   vertical-align: middle;
}

.point_container input[type="text"],
.point_container input[type="tel"],
.point_container select {
   width: 100%;
   padding: 10px;
   border: 1px solid #cbd5e1;
   border-radius: var(--radius-sm);
   margin-bottom: 10px;
   font-size: var(--font-md);
   background-color: var(--white-color);
}

.point_container input[type="text"]:focus,
.point_container input[type="tel"]:focus,
.point_container select:focus {
   outline: none;
   border-color: var(--primary-color);
   box-shadow: var(--shadow-md);
}

.point_container input[type="text"]:hover,
.point_container input[type="tel"]:hover,
.point_container select:hover {
   border: var(--primary-color) solid 1px;
}

.point_container select:hover {
   cursor: pointer;
}

/* Result Display */
.point_container output {
   font-weight: 500;
   color: var(--secondary-dark);
   font-size: var(--font-lg);
   padding: 5px;
   border-radius: 8px;
   display: inline-block;
   min-width: 50px;
   text-align: center;
}

.point_container output[name="fuoye"]::after {
   content: "%";
}

.point_container output[name="waec"]::after {
   content: "/40";
}

.point_container output[name="screening"]::after {
   content: "/60";
}

.point_container .result {
   margin-top: 15px;
   padding: 12px;
   background-color: var(--primary-soft);
   border-radius: 4px;
   text-align: center;
   transition: var(--transition);
}

/* Grade Input Groups */
.point_container .grade {
   display: flex;
   align-items: center;
   margin-bottom: 12px;
}

.point_container .grade label {
   width: 120px;
   margin-right: 20px;
   flex-shrink: 0;
}

.point_container .grade select {
   flex: 1;
}

.point_container .grade-select label:not(.exclude)::after {
   content: ":";
}

/* Action Buttons */
.point_container .join_whatsapp {
   display: block;
   width: 100%;
   max-width: 800px;
   margin: 20px auto 0 auto;
   padding: 15px;
   font-weight: var(--font-bold);
}

/* *modals */
/* Modal styling */
.custom-alert {
   position: fixed;
   top: 0;
   left: 0;
   width: 100%;
   height: 100%;
   background-color: rgba(0, 0, 0, 0.7);
   display: flex;
   justify-content: center;
   align-items: center;
   z-index: 1000;
   transition: opacity 0.3s ease;
}

.custom-alert.hidden {
   display: none;
   opacity: 0;
}

.custom-alert-box {
   width: 90%;
   max-width: 500px;
   border-radius: 10px;
   box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
   padding: 30px;
   background-color: white;
   transition: all 0.3s ease;
   animation: modalAppear 0.4s ease;
}

@keyframes modalAppear {
   from {
      transform: translateY(-50px);
      opacity: 0;
   }

   to {
      transform: translateY(0);
      opacity: 1;
   }
}

.custom-alert-box h3 {
   margin-top: 0;
   text-align: center;
   font-size: 1.5rem;
   margin-bottom: 20px;
}

.result-breakdown {
   margin-bottom: 20px;
}

.result-breakdown p {
   margin: 10px 0;
   font-size: 1.1rem;
}

.total-points {
   font-size: 1.3rem !important;
   margin-top: 15px !important;
   padding-top: 15px;
   border-top: 1px solid rgba(0, 0, 0, 0.1);
}

.evaluation {
   padding: 15px;
   border-radius: 5px;
   margin: 15px 0;
}

.evaluation.fail {
   background-color: #feebef !important;
   border-left: 4px solid #dc3545 !important;
}

.evaluation.average {
   background-color: #fff8eb !important;
   border-left: 4px solid #fd7e14 !important;
}

.evaluation.excellent {
   background-color: #ebf9f1 !important;
   border-left: 4px solid #28a745 !important;
}

#alertOk {
   display: block;
   width: 100%;
   padding: 12px;
   background-color: var(--secondary-dark);
   color: white;
   border: none;
   border-radius: 5px;
   font-size: 1.1rem;
   cursor: pointer;
   transition: background-color 0.2s ease;
   margin-top: 20px;
}

#alertOk:hover {
   background-color: var(--primary-color);
}



/* *======= chatbot */
/* Floating Chat Button */
.chatbot-toggle {
   position: fixed;
   bottom: 30px;
   right: 30px;
   width: 60px;
   height: 60px;
   background: linear-gradient(135deg, #e5ff00, #228B22);
   border: none;
   border-radius: 50%;
   cursor: pointer;
   display: flex;
   align-items: center;
   justify-content: center;
   box-shadow: 0 8px 32px rgba(252, 247, 0, 0.3);
   z-index: 1000;
   transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
   animation: pulse 2s infinite;
}

.chatbot-toggle:hover {
   transform: scale(1.1);
   box-shadow: 0 12px 40px rgba(229, 255, 0, 0.4);
}

.chatbot-toggle i {
   color: white;
   font-size: 24px;
   transition: all 0.3s ease;
}

.chatbot-toggle.active i.fa-comments {
   opacity: 0;
   transform: rotate(180deg);
}

.chatbot-toggle.active i.fa-times {
   opacity: 1;
   transform: rotate(0deg);
}

.chatbot-toggle i.fa-times {
   position: absolute;
   opacity: 0;
   transform: rotate(-180deg);
}

@keyframes pulse {
   0% {
      box-shadow: 0 8px 32px rgba(229, 255, 0, 0.4);
   }

   50% {
      box-shadow: 0 8px 32px rgba(229, 255, 0, 0.4);
   }

   100% {
      box-shadow: 0 8px 32px rgba(229, 255, 0, 0.4);
   }
}

/* Chat Window */
.chatbot-window {
   position: fixed;
   bottom: 100px;
   right: 30px;
   width: 380px;
   height: 85vh;
   background: white;
   border-radius: 20px;
   box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
   z-index: 999;
   display: flex;
   flex-direction: column;
   overflow: hidden;
   transform: scale(0.8) translateY(20px);
   opacity: 0;
   visibility: hidden;
   transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
   border: 2px solid rgba(208, 255, 0, 0.1);
}

.chatbot-window.active {
   transform: scale(1) translateY(0);
   opacity: 1;
   visibility: visible;
}

/* Chat Header */
.chat-header {
   background: linear-gradient(135deg, #e5ff00, #228B22);
   color: white;
   padding: 20px;
   display: flex;
   align-items: center;
   justify-content: space-between;
   position: relative;
}

.chat-header::before {
   content: '';
   position: absolute;
   bottom: 0;
   left: 0;
   right: 0;
   height: 1px;
   background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
}

.header-info {
   display: flex;
   align-items: center;
   gap: 12px;
}

.chatbot-avatar {
   width: 40px;
   height: 40px;
   border-radius: 50%;
   background: white;
   display: flex;
   align-items: center;
   justify-content: center;
   box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
}

.chatbot-avatar img {
   width: 28px;
   height: 28px;
   border-radius: 50%;
}

.header-text h3 {
   font-size: 1.1rem;
   font-weight: 600;
   margin-bottom: 2px;
}

.header-text .status {
   font-size: 0.8rem;
   opacity: 0.8;
   display: flex;
   align-items: center;
   gap: 6px;
}

.status-dot {
   width: 8px;
   height: 8px;
   background: #00ff88;
   border-radius: 50%;
   animation: blink 2s infinite;
}

@keyframes blink {

   0%,
   50% {
      opacity: 1;
   }

   51%,
   100% {
      opacity: 0.3;
   }
}

.close-btn {
   background: none;
   border: none;
   color: white;
   font-size: 18px;
   cursor: pointer;
   padding: 8px;
   border-radius: 50%;
   transition: all 0.3s ease;
}

.close-btn:hover {
   background: rgba(255, 255, 255, 0.1);
   transform: rotate(90deg);
}

/* Chat Messages Area */
.chat-messages {
   flex: 1;
   overflow-y: auto;
   padding: 20px;
   background: #f8f9fa;
   display: flex;
   flex-direction: column;
   gap: 16px;
}

.chat-messages::-webkit-scrollbar {
   width: 6px;
}

.chat-messages::-webkit-scrollbar-track {
   background: #e9ecef;
   border-radius: 10px;
}

.chat-messages::-webkit-scrollbar-thumb {
   background: #228B22;
   border-radius: 10px;
}

.message {
   display: flex;
   align-items: flex-end;
   gap: 10px;
   animation: slideIn 0.4s ease;
}

.message.user {
   flex-direction: row-reverse;
}

.message.bot {
   flex-direction: row;
}

.message-avatar {
   width: 32px;
   height: 32px;
   border-radius: 50%;
   display: flex;
   align-items: center;
   justify-content: center;
   font-size: 14px;
   flex-shrink: 0;
}

.message.bot .message-avatar {
   background: linear-gradient(135deg, #e5ff00, #228B22);
   color: white;
}

.message.user .message-avatar {
   background: linear-gradient(135deg, #e5ff00, #228B22);
   color: white;
}

.message-content {
   max-width: 70%;
   padding: 12px 16px;
   border-radius: 18px;
   font-size: 0.9rem;
   line-height: 1.4;
   position: relative;
}

.message.bot .message-content {
   background: white;
   color: #333;
   border-bottom-left-radius: 6px;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.message.user .message-content {
   background: linear-gradient(135deg, #e5ff00, #228B22);
   color: white;
   border-bottom-right-radius: 6px;
}

.message-time {
   font-size: 0.7rem;
   opacity: 0.6;
   margin-top: 4px;
}

@keyframes slideIn {
   from {
      opacity: 0;
      transform: translateY(20px);
   }

   to {
      opacity: 1;
      transform: translateY(0);
   }
}

/* Typing Indicator */
.typing-indicator {
   display: flex;
   align-items: center;
   gap: 10px;
   padding: 12px 16px;
   background: white;
   border-radius: 18px;
   border-bottom-left-radius: 6px;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
   max-width: fit-content;
}

.typing-dots {
   display: flex;
   gap: 4px;
}

.typing-dot {
   width: 8px;
   height: 8px;
   background: #568302;
   border-radius: 50%;
   animation: typingDot 1.4s infinite;
}

.typing-dot:nth-child(2) {
   animation-delay: 0.2s;
}

.typing-dot:nth-child(3) {
   animation-delay: 0.4s;
}

@keyframes typingDot {

   0%,
   60%,
   100% {
      transform: translateY(0);
      opacity: 0.4;
   }

   30% {
      transform: translateY(-10px);
      opacity: 1;
   }
}

/* Chat Input */
.chat-input {
   padding: 20px;
   background: white;
   border-top: 1px solid #e9ecef;
   display: flex;
   gap: 12px;
   align-items: flex-end;
}

.input-wrapper {
   flex: 1;
   position: relative;
}

.message-input {
   width: 100%;
   border: 2px solid #e9ecef;
   border-radius: 25px;
   padding: 12px 20px;
   font-size: 0.9rem;
   resize: none;
   outline: none;
   font-family: inherit;
   transition: all 0.3s ease;
   max-height: 120px;
   min-height: 45px;
   scrollbar-color: transparent transparent;
}

.message-input:focus {
   border-color: #228B22;
   box-shadow: 0 0 0 3px rgba(34, 139, 34, 0.1);
}

.send-btn {
   width: 45px;
   height: 45px;
   background: linear-gradient(135deg, #e5ff00, #228B22);
   border: none;
   border-radius: 50%;
   color: white;
   font-size: 16px;
   cursor: pointer;
   display: flex;
   align-items: center;
   justify-content: center;
   transition: all 0.3s ease;
   flex-shrink: 0;
}

.send-btn:hover {
   transform: scale(1.1);
   box-shadow: 0 6px 20px rgba(217, 255, 0, 0.3);
}

.send-btn:disabled {
   opacity: 0.5;
   cursor: not-allowed;
   transform: none;
}

/* Welcome Message */
.welcome-message {
   text-align: center;
   padding: 40px 20px;
   color: #666;
}

.welcome-message i {
   font-size: 48px;
   color: #e5ff00;
   margin-bottom: 16px;
}

.welcome-message h4 {
   font-size: 1.2rem;
   margin-bottom: 8px;
   color: #333;
}

.welcome-message p {
   font-size: 0.9rem;
   opacity: 0.8;
}

/* Mobile Responsive */
@media (max-width: 480px) {
   .chatbot-window {
      right: 10px;
      left: 10px;
      width: auto;
      bottom: 90px;
      height: 80vh;
      max-height: 600px;
   }

   .chatbot-toggle {
      right: 20px;
      bottom: 20px;
      width: 55px;
      height: 55px;
   }

   .chat-header {
      padding: 16px;
   }

   .header-info {
      gap: 10px;
   }

   .chatbot-avatar {
      width: 36px;
      height: 36px;
   }

   .message-content {
      max-width: 80%;
      padding: 10px 14px;
   }

   .chat-messages {
      padding: 16px;
   }

   .chat-input {
      padding: 16px;
   }
}

/* Notification Badge */
.notification-badge {
   position: absolute;
   top: -5px;
   right: -5px;
   background: #ff4757;
   color: white;
   border-radius: 50%;
   width: 20px;
   height: 20px;
   font-size: 12px;
   display: flex;
   align-items: center;
   justify-content: center;
   font-weight: 600;
   animation: bounce 2s infinite;
}

@keyframes bounce {

   0%,
   20%,
   50%,
   80%,
   100% {
      transform: translateY(0);
   }

   40% {
      transform: translateY(-10px);
   }

   60% {
      transform: translateY(-5px);
   }
}


/* *========= Media Queries ========= */
/* Desktops and Laptops */
@media (min-width: 1024px) {
   .point_container {
      padding: 30px 20px;
   }
}



/* *Mobile Portrait */
@media (max-width: 480px) {
   .point_container .grade {
      flex-direction: column;
      align-items: flex-start;
   }

   .point_container .grade label {
      margin-bottom: 4px;
      width: 100%;
   }

   .point_container .grade select {
      width: 100%;
   }

   .point_container fieldset {
      padding: 25px 12px 12px;
   }

   .point_container fieldset legend {
      font-size: 1rem;
      padding: 6px 12px;
   }

   .point_container div.sit {
      width: 100%;
   }

}

/* Small Mobile Devices */
@media (max-width: 360px) {
   .point_container {
      padding: 15px 10px;
   }

   .point_container form {
      padding: 15px 10px;
   }
}