/* --- style.css --- */

/* 1. Variables & Basic Reset */
:root {
    --font-primary: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    --font-secondary: 'Helvetica Neue', Helvetica, Arial, sans-serif;
  
    --color-primary: #007bff; /* A nice blue */
    --color-primary-dark: #0056b3;
    --color-secondary: #6c757d; /* Gray */
    --color-success: #28a745;
    --color-error: #dc3545;
    --color-light: #f8f9fa;
    --color-dark: #343a40;
    --color-text: #212529;
    --color-text-muted: #6c757d;
    --color-bg: #ffffff;
    --color-border: #dee2e6;
  
    --spacing-xs: 0.25rem; /* 4px */
    --spacing-sm: 0.5rem;  /* 8px */
    --spacing-md: 1rem;    /* 16px */
    --spacing-lg: 1.5rem;  /* 24px */
    --spacing-xl: 2rem;    /* 32px */
  
    --border-radius: 0.3rem;
    --box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    --transition-speed: 0.2s ease-in-out;
  }
  
  /* Basic Reset & Body Styling */
  *,
  *::before,
  *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
  }
  
  html {
    font-size: 16px; /* Base font size */
    scroll-behavior: smooth;
  }
  
  body {
    font-family: var(--font-primary);
    line-height: 1.6;
    color: var(--color-text);
    background-color: var(--color-light); /* Light background */
    display: flex;
    flex-direction: column;
    align-items: center;
    min-height: 100vh;
    padding: var(--spacing-md);
  }
  
  /* 2. Typography & General Elements */
  h1, h2 {
    font-family: var(--font-secondary);
    font-weight: 600;
    margin-bottom: var(--spacing-md);
    color: var(--color-dark);
    text-align: center;
  }
  
  h1 {
    font-size: 1.8rem;
    margin-bottom: var(--spacing-lg);
    color: var(--color-primary);
  }
  
  h2 {
    font-size: 1.4rem;
    border-bottom: 1px solid var(--color-border);
    padding-bottom: var(--spacing-sm);
    margin-top: var(--spacing-lg);
  }
  
  p {
    margin-bottom: var(--spacing-md);
    text-align: center;
    max-width: 600px; /* Prevent paragraphs from getting too wide */
  }
  
  a {
    color: var(--color-primary);
    text-decoration: none;
    transition: color var(--transition-speed);
  }
  
  a:hover {
    color: var(--color-primary-dark);
    text-decoration: underline;
  }
  
  /* 3. Content Sections / Containers */
  #auth-container,
  #rsvp-container,
  #attendees-container {
    background-color: var(--color-bg);
    padding: var(--spacing-lg);
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    width: 100%;
    max-width: 500px; /* Max width for content blocks */
    margin-bottom: var(--spacing-lg);
  }
  
  /* 4. Forms Elements (Inputs, Buttons, Labels) */
  input[type="email"],
  input[type="password"],
  input[type="number"],
  input[type="text"],
  textarea {
    display: block;
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    margin-bottom: var(--spacing-md);
    font-size: 1rem;
    line-height: 1.5;
    color: var(--color-text);
    background-color: var(--color-bg);
    background-clip: padding-box;
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    transition: border-color var(--transition-speed), box-shadow var(--transition-speed);
  }
  
  input[type="email"]:focus,
  input[type="password"]:focus,
  input[type="number"]:focus,
  input[type="text"]:focus,
  textarea:focus {
    border-color: var(--color-primary);
    outline: 0;
    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); /* Subtle focus glow */
  }
  
  #auth-container .button-group {
    text-align: center;
    /* margin-top: var(--spacing-md); */ /* Removed top margin as it's handled by input spacing */
    margin-bottom: var(--spacing-md); /* Keep bottom margin */
}

/* Styling for Provider Buttons (Google/Apple) */
#auth-container .provider-button {
    display: block; /* Make buttons take full width */
    width: 100%;    /* Ensure they take full width */
    margin-bottom: var(--spacing-sm); /* Add space between provider buttons */
    text-align: center; /* Center text within the button */
}

/* Optional: Style Google button differently */
#google-login {
    background-color: #db4437; /* Google Red */
    border-color: #db4437;
}
#google-login:hover {
    background-color: #c33d2e;
    border-color: #b03629;
}
#google-login:focus {
     box-shadow: 0 0 0 0.2rem rgba(219, 68, 55, 0.5);
}

/* Optional: Style Apple button differently */
#apple-login {
    background-color: #000000; /* Apple Black */
    border-color: #000000;
}
#apple-login:hover {
    background-color: #333333;
    border-color: #1a1a1a;
}
 #apple-login:focus {
     box-shadow: 0 0 0 0.2rem rgba(0, 0, 0, 0.5);
}

  textarea {
    resize: vertical; /* Allow vertical resize only */
    min-height: 80px;
  }
  
  label {
    display: inline-block; /* Changed for radio/checkbox */
    margin-bottom: var(--spacing-sm);
    font-weight: 500;
  }
  
  /* Specific styles for radio buttons */
  #rsvp-container label {
    margin-right: var(--spacing-md); /* Space between radio options */
    display: inline-flex; /* Align radio and text nicely */
    align-items: center;
    cursor: pointer;
  }
  
  #rsvp-container input[type="radio"] {
    margin-right: var(--spacing-xs);
    /* Optional: custom radio styling */
  }
  
  button {
    display: inline-block;
    font-weight: 500;
    color: #fff;
    text-align: center;
    vertical-align: middle;
    cursor: pointer;
    user-select: none;
    background-color: var(--color-primary);
    border: 1px solid var(--color-primary);
    padding: var(--spacing-sm) var(--spacing-lg);
    font-size: 1rem;
    line-height: 1.5;
    border-radius: var(--border-radius);
    transition: color var(--transition-speed), background-color var(--transition-speed), border-color var(--transition-speed), box-shadow var(--transition-speed);
    margin: var(--spacing-xs); /* Add small margin for spacing if buttons wrap */
  }
  
  button:hover {
    background-color: var(--color-primary-dark);
    border-color: var(--color-primary-dark);
  }
  
  button:focus {
    outline: 0;
    box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); /* Focus glow matching hover */
  }
  
  button:active {
    transform: translateY(1px); /* Subtle press effect */
  }
  
  /* Style logout button differently */
  #logout {
    background-color: var(--color-secondary);
    border-color: var(--color-secondary);
  }
  
  #logout:hover {
    background-color: #5a6268;
    border-color: #545b62;
  }
  
  /* Center buttons in auth container if needed */
  #auth-container {
      text-align: center; /* Centers inline-block buttons */
  }
  
  
  /* 5. Status Messages */
  #auth-status,
  #rsvp-status {
    margin-top: var(--spacing-md);
    font-size: 0.9rem;
    min-height: 1.2em; /* Reserve space to prevent layout jumps */
    text-align: center;
    color: var(--color-text-muted);
  }
  
  /* Add specific styling for error messages potentially */
  /* Example: Add a class 'error-message' via JS */
  .error-message {
    color: var(--color-error);
    font-weight: 500;
  }
  
  
  /* 6. Attendees List */
  #attendees-container ul {
    list-style: none; /* Remove default bullets */
    padding: 0;
    margin-top: var(--spacing-md);
  }
  
  #attendees-container li {
    background-color: var(--color-light); /* Slightly different background for list items */
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    margin-bottom: var(--spacing-sm);
    font-size: 0.95rem;
    transition: background-color var(--transition-speed);
  }
  
  #attendees-container li:hover {
      background-color: #e9ecef; /* Subtle hover effect */
  }
  
  /* 7. Responsive Adjustments (Mobile First) */
  
  /* Tablet and larger */
  @media (min-width: 768px) {
    html {
      font-size: 17px; /* Slightly larger base font */
    }
  
    h1 {
      font-size: 2.2rem;
    }
  
    h2 {
      font-size: 1.6rem;
    }
  
    /* Optional: Maybe put auth buttons side-by-side */
    /* #auth-container button {
       display: inline-block;
       width: auto;
       margin: var(--spacing-sm);
    } */
  }
  
  /* Desktop and larger */
  @media (min-width: 1024px) {
    html {
      font-size: 18px;
    }
  
    h1 {
      font-size: 2.5rem;
    }
  
    #auth-container,
    #rsvp-container,
    #attendees-container {
        max-width: 600px; /* Allow slightly wider content on desktop */
        padding: var(--spacing-xl);
    }
  }
  
   /*Optional: Dark Mode (Detects user's OS preference) */
   @media (prefers-color-scheme: dark) {
    :root {
      --color-primary: #3793ff;
      --color-primary-dark: #63aeff;
      --color-secondary: #868e96;
      --color-light: #343a40;
      --color-dark: #f8f9fa;
      --color-text: #e9ecef;
      --color-text-muted: #adb5bd;
      --color-bg: #212529;
      --color-border: #495057;
      --box-shadow: 0 2px 10px rgba(255, 255, 255, 0.05);
    }
  
    #attendees-container li {
       background-color: #495057;
       border-color: #6c757d;
    }
     #attendees-container li:hover {
      background-color: #5a6268;
    }
    .party-details {
        background-color: var(--color-bg);
         border-left-color: var(--color-primary);
    }

     .karting-rules li {
       background-color: #495057;
       border-color: #6c757d;
       border-left-color: var(--color-secondary);
    }

     .karting-rules strong {
        color: #ff8a8a; /* Lighter red for dark mode */
     }
  
  }

  .party-details {
    margin-bottom: var(--spacing-lg);
    max-width: 600px;
    text-align: left; /* Align text left for better readability of lists */
    background-color: var(--color-bg); /* Give it a background */
    padding: var(--spacing-lg);
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    border-left: 5px solid var(--color-primary); /* Add a nice accent border */
}

.party-details {
    margin-bottom: var(--spacing-lg);
    max-width: 650px; /* Slightly wider to accommodate map better */
    text-align: left;
    background-color: var(--color-bg);
    padding: var(--spacing-lg) var(--spacing-xl); /* More padding */
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    border: 1px solid var(--color-border); /* Add a subtle border */
    /* border-left: 5px solid var(--color-primary); Remove specific side border */
}

.party-details h3 {
    font-family: var(--font-secondary);
    font-size: 1.3rem; /* Slightly smaller than main h2 */
    color: var(--color-primary); /* Use primary color for headings */
    margin-top: var(--spacing-lg);
    margin-bottom: var(--spacing-md);
    padding-bottom: var(--spacing-xs);
    border-bottom: 2px solid var(--color-primary-dark);
}
.party-details h3:first-child {
    margin-top: 0; /* No top margin for the very first heading */
}


.party-details p,
.party-details ul { /* Apply to both paragraphs and lists within details */
    text-align: left; /* Override general p centering */
    margin-bottom: var(--spacing-md);
    line-height: 1.7; /* Slightly increase line height for readability */
}
.party-details ul {
    list-style-position: outside; /* Ensure bullets are outside text flow */
    padding-left: var(--spacing-lg); /* Indent lists */
     list-style-type: disc; /* Default disc bullets */
}


.party-details a {
    font-weight: 500;
    /* color: var(--color-primary); */ /* Already default */
}
.party-details a:hover {
     /* color: var(--color-primary-dark); */ /* Already default */
     text-decoration: underline;
}

/* Divider Style */
.details-divider {
    border: 0;
    height: 1px;
    background-color: var(--color-border);
    margin: var(--spacing-lg) 0;
}


/* Specific styling for the Karting Rules list */
.karting-rules {
    list-style: none; /* Remove default bullets */
    padding-left: 0; /* Remove default padding */
    margin-top: var(--spacing-sm);
}

.karting-rules li {
    background-color: var(--color-light);
    border: 1px solid var(--color-border);
    border-left: 4px solid var(--color-secondary);
    padding: var(--spacing-sm) var(--spacing-md);
    margin-bottom: var(--spacing-sm);
    border-radius: var(--border-radius);
    font-size: 0.95rem;
}

.karting-rules strong {
    color: var(--color-error);
    font-weight: 600;
}

/* Map Container Styling */
.map-container {
    margin-top: var(--spacing-md);
    margin-bottom: var(--spacing-md);
    position: relative;
    overflow: hidden;
    padding-top: 56.25%; /* 16:9 Aspect Ratio (divide height by width) */
    /* Alternative: Fixed height: height: 300px; padding-top: 0; */
    border-radius: var(--border-radius); /* Rounded corners for container */
     border: 1px solid var(--color-border); /* Add border around map */
}

.map-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 0; /* Remove default iframe border if any */
}

/*
.karting-rules li::before {
    /* Optional: Add a small icon or marker */
    /* content: " K "; */
    /* font-weight: bold; */
    /* color: var(--color-secondary); */
    /* margin-right: var(--spacing-sm); */
/*}*/


.karting-rules strong {
    color: var(--color-error); /* Make required text stand out */
    font-weight: 600;
}