* {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      body {
        font-family: "Noto Sans JP", "M PLUS 1p", sans-serif;
        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        min-height: 100vh;
        display: flex;
        justify-content: center;
        align-items: center;
        position: relative;
        overflow: hidden;
      }

      /* Temple Gate Animation */
      .temple-gate {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.9);
        z-index: 9999;
        display: flex;
        justify-content: center;
        align-items: center;
        animation: gateDisappear 2s ease-in-out 1s forwards;
      }

      .gate-pillar {
        width: 40px;
        height: 300px;
        background: linear-gradient(to bottom, #8b4513, #654321);
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        box-shadow: 0 0 20px rgba(139, 69, 19, 0.5);
      }

      .gate-pillar.left {
        left: 35%;
        animation: gateSlideLeft 1.5s ease-in-out 1s forwards;
      }

      .gate-pillar.right {
        right: 35%;
        animation: gateSlideRight 1.5s ease-in-out 1s forwards;
      }
      .form-group select {
        width: 100%;
        padding: 12px 15px;
        border: 2px solid #e0e0e0;
        border-radius: 10px;
        font-size: 14px;
        font-family: "Noto Sans JP", sans-serif;
        transition: all 0.3s ease;
        background: white;
        appearance: none;
        background-image: url("data:image/svg+xml;charset=US-ASCII,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'><path fill='%23666' d='M2 0L0 2h4zm0 5L0 3h4z'/></svg>");
        background-repeat: no-repeat;
        background-position: right 15px center;
        background-size: 12px;
      }

      .form-group select:focus {
        outline: none;
        border-color: #667eea;
        box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
      }

      .form-group select:hover {
        border-color: #667eea;
      }

      .gate-roof {
        position: absolute;
        top: calc(50% - 180px);
        width: 35%;
        height: 60px;
        background: linear-gradient(to bottom, #b22222, #8b0000);
        border-radius: 0 0 20px 20px;
        box-shadow: 0 0 30px rgba(178, 34, 34, 0.6);
        animation: gateSlideUp 1.5s ease-in-out 1s forwards;
      }

      .gate-text {
        font-size: 120px;
        position: absolute;
        z-index: 10000;
        animation: fadeOut 1s ease-in-out 1.5s forwards;
      }

      @keyframes gateSlideLeft {
        to {
          left: -100px;
          opacity: 0;
        }
      }

      @keyframes gateSlideRight {
        to {
          right: -100px;
          opacity: 0;
        }
      }
      .message-box {
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        padding: 20px;
        border-radius: 10px;
        z-index: 1000;
        text-align: center;
        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
        font-family: "Noto Sans JP", sans-serif;
      }

      .message-box.error {
        background: #fef2f2;
        border: 2px solid #fecaca;
        color: #dc2626;
      }

      .message-box.success {
        background: #f0f9ff;
        border: 2px solid #bae6fd;
        color: #0369a1;
      }
      @keyframes gateSlideUp {
        to {
          top: -100px;
          opacity: 0;
        }
      }

      @keyframes gateDisappear {
        to {
          opacity: 0;
          visibility: hidden;
        }
      }

      @keyframes fadeOut {
        to {
          opacity: 0;
        }
      }

      /* Background Shrine */
      .background-shrine {
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        opacity: 0.1;
        z-index: 0;
        pointer-events: none;
      }

      .shrine-pillar {
        width: 60px;
        height: 400px;
        background: linear-gradient(to right, #8b4513, #654321, #8b4513);
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
      }

      .shrine-left {
        left: -250px;
      }

      .shrine-right {
        right: -250px;
      }

      .shrine-roof-top {
        position: absolute;
        top: -50px;
        left: -300px;
        width: 600px;
        height: 80px;
        background: linear-gradient(to bottom, #b22222, #8b0000);
        clip-path: polygon(10% 100%, 50% 0%, 90% 100%);
      }

      .shrine-roof-bottom {
        position: absolute;
        top: 20px;
        left: -280px;
        width: 560px;
        height: 60px;
        background: linear-gradient(to bottom, #cd5c5c, #8b0000);
        clip-path: polygon(15% 100%, 50% 0%, 85% 100%);
      }

      /* Info Container */
      .info-container {
        background: rgba(255, 255, 255, 0.95);
        padding: 40px;
        border-radius: 20px;
        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
        width: 90%;
        max-width: 500px;
        position: relative;
        z-index: 1;
        animation: slideUp 0.8s ease-out 2.5s backwards;
      }

      @keyframes slideUp {
        from {
          opacity: 0;
          transform: translateY(50px);
        }
        to {
          opacity: 1;
          transform: translateY(0);
        }
      }

      .info-header {
        text-align: center;
        margin-bottom: 30px;
        padding-bottom: 20px;
        border-bottom: 2px solid #667eea;
      }

      .info-header h1 {
        font-family: "Cinzel", "Playfair Display", serif;
        font-size: 32px;
        color: #667eea;
        margin-bottom: 10px;
      }

      .info-header p {
        font-size: 14px;
        color: #666;
        font-family: "Noto Sans JP", sans-serif;
      }

      .form-group {
        margin-bottom: 25px;
      }

      .form-group label {
        display: block;
        margin-bottom: 8px;
        color: #333;
        font-weight: 500;
        font-size: 14px;
      }

      .form-group input[type="text"],
      .form-group input[type="date"],
      .form-group input[type="password"],
      .form-group input[type="email"] {
        width: 100%;
        padding: 12px 15px;
        border: 2px solid #e0e0e0;
        border-radius: 10px;
        font-size: 14px;
        font-family: "Noto Sans JP", sans-serif;
        transition: all 0.3s ease;
        background: white;
      }

      .form-group input:focus {
        outline: none;
        border-color: #667eea;
        box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
      }

      /* Gender Radio Buttons */
      .gender-options {
        display: flex;
        gap: 20px;
        margin-top: 10px;
      }

      .gender-option {
        flex: 1;
        position: relative;
      }

      .gender-option input[type="radio"] {
        position: absolute;
        opacity: 0;
        cursor: pointer;
      }

      .gender-option label {
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 12px 20px;
        border: 2px solid #e0e0e0;
        border-radius: 10px;
        cursor: pointer;
        transition: all 0.3s ease;
        background: white;
        font-weight: 400;
      }

      .gender-option input[type="radio"]:checked + label {
        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        color: white;
        border-color: #667eea;
        font-weight: 500;
      }

      .gender-option label:hover {
        border-color: #667eea;
        transform: translateY(-2px);
        box-shadow: 0 5px 15px rgba(102, 126, 234, 0.2);
      }

      /* Submit Button */
      .submit-btn {
        width: 100%;
        padding: 15px;
        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        color: white;
        border: none;
        border-radius: 10px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.3s ease;
        font-family: "Noto Sans JP", sans-serif;
        margin-top: 10px;
      }

      .submit-btn:hover {
        transform: translateY(-2px);
        box-shadow: 0 10px 25px rgba(102, 126, 234, 0.4);
      }

      .submit-btn:active {
        transform: translateY(0);
      }

      /* Sakura Petals */
      .sakura-container {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        pointer-events: none;
        z-index: 0;
      }

      .sakura {
        position: absolute;
        font-size: 20px;
        animation: fall linear infinite;
        opacity: 0.7;
      }

      .sakura:nth-child(1) {
        left: 10%;
        animation-duration: 12s;
        animation-delay: 0s;
      }
      .sakura:nth-child(2) {
        left: 20%;
        animation-duration: 10s;
        animation-delay: 2s;
      }
      .sakura:nth-child(3) {
        left: 30%;
        animation-duration: 14s;
        animation-delay: 4s;
      }
      .sakura:nth-child(4) {
        left: 40%;
        animation-duration: 11s;
        animation-delay: 1s;
      }
      .sakura:nth-child(5) {
        left: 50%;
        animation-duration: 13s;
        animation-delay: 3s;
      }
      .sakura:nth-child(6) {
        left: 60%;
        animation-duration: 15s;
        animation-delay: 5s;
      }
      .sakura:nth-child(7) {
        left: 70%;
        animation-duration: 12s;
        animation-delay: 2s;
      }
      .sakura:nth-child(8) {
        left: 80%;
        animation-duration: 10s;
        animation-delay: 4s;
      }

      @keyframes fall {
        0% {
          top: -10%;
          transform: translateX(0) rotate(0deg);
        }
        100% {
          top: 110%;
          transform: translateX(100px) rotate(360deg);
        }
      }

      /* Watermark */
      .watermark {
        position: fixed;
        bottom: 20px;
        right: 20px;
        font-family: "Cinzel", serif;
        font-size: 14px;
        color: rgba(255, 255, 255, 0.6);
        text-align: right;
        z-index: 10;
        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
      }

      .watermark-jp {
        font-family: "Noto Sans JP", sans-serif;
        font-size: 12px;
        display: block;
        margin-top: 5px;
      }

      /* Loading Animation */
      .loading-overlay {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.9);
        z-index: 10000;
        display: none;
        justify-content: center;
        align-items: center;
        flex-direction: column;
      }

      .loading-overlay.active {
        display: flex;
      }

      .loading-text {
        color: white;
        font-size: 24px;
        margin-bottom: 20px;
        font-family: "Noto Sans JP", sans-serif;
      }

      .loading-spinner {
        width: 50px;
        height: 50px;
        border: 5px solid rgba(255, 255, 255, 0.3);
        border-top: 5px solid white;
        border-radius: 50%;
        animation: spin 1s linear infinite;
      }

      @keyframes spin {
        to {
          transform: rotate(360deg);
        }
      }

      .error-label {
        color: #dc2626;
        background-color: #fef2f2;
        border: 1px solid #fecaca;
        padding: 8px 8px;
        border-radius: 4px;
        display: none;
        width: fit-content;
        margin: 10px 0;
      }

      .style-toggle-btn {
        position: fixed;
        top: 20px;
        right: 20px;
        padding: 10px 15px;
        background: #667eea;
        color: white;
        border: none;
        border-radius: 5px;
        cursor: pointer;
        z-index: 1000;
        font-family: inherit;
      }

      .style-toggle-btn:hover {
        background: #764ba2;
      }

      .login-container {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        min-height: 100vh;
        padding: 20px;
        position: relative;
        z-index: 10;
      }

      .login-header {
        text-align: center;
        margin-bottom: 30px;
        padding-bottom: 20px;
        border-bottom: 2px solid #667eea;
      }

      .login-header h1 {
        font-family: "Cinzel", "Playfair Display", serif;
        font-size: 32px;
        color: #667eea;
        margin-bottom: 10px;
      }

      .login-form, .signup-form {
        background: rgba(255, 255, 255, 0.95);
        padding: 40px;
        border-radius: 20px;
        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
        width: 90%;
        max-width: 500px;
        position: relative;
        z-index: 1;
        animation: slideUp 0.8s ease-out 2.5s backwards;
      }

      .form-links {
        text-align: center;
        margin-top: 20px;
      }

      .form-links a {
        color: #667eea;
        text-decoration: none;
        font-size: 14px;
        font-weight: 500;
        font-family: "Noto Sans JP", sans-serif;
        transition: all 0.3s ease;
      }

      .form-links a:hover {
        color: #764ba2;
        text-decoration: underline;
      }

      .logout-link {
        display: inline-block;
        margin-top: 15px;
        color: #667eea;
        text-decoration: none;
        font-size: 14px;
        font-weight: 500;
        transition: all 0.3s ease;
      }

      .logout-link:hover {
        color: #764ba2;
        text-decoration: underline;
      }