body {
margin: 0;
min-height: 100vh;
background: radial-gradient(circle at top, #49c1f5 0%, #015a8f 40%, #013250 100%);
overflow: hidden;
background: url("/assets/image/login/bg.webp") center center / cover no-repeat;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

/* Bubble */
#bubble-container {
position: fixed;
inset: 0;
pointer-events: none;
z-index: 1;
}

.bubble {
position: absolute;
border-radius: 999px;
border: 1px solid rgba(255,255,255,0.6);
background: radial-gradient(circle at 30% 30%, rgba(255,255,255,0.7), transparent 60%);
opacity: .6;
animation: rise linear infinite;
}

@keyframes rise {
from { transform: translateY(0); opacity: 0; }
15% { opacity: .5; }
85% { opacity: .6; }
to { transform: translateY(-110vh); opacity: 0; }
}

/* Glass Card */
.glass-card {
position: relative;
width: 55rem;
max-width: 90vw;
height: 32rem;
border-radius: 32px;
/* overflow: hidden; */ /* REMOVED: breaks preserve-3d in Safari */
border: 1px solid rgba(255, 255, 255, 0.374);
box-shadow: 0 24px 70px rgba(0,0,0,.3);
perspective: 1200px;
}

.text-outline {
    text-shadow:
        0 0 1.5px rgba(255, 255, 255, 0.452),
        0 0 1.5px rgba(255,255,255,.6),
        0 0 1.5px rgba(255,255,255,.4);
}

.glass-card::before {
content: "";
position: absolute;
inset: 0;
background: transparent;
backdrop-filter: blur(2px);
-webkit-backdrop-filter: blur(2px);
z-index: 0;
}

.card-container {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
transform-style: preserve-3d;
transition: transform 0.8s cubic-bezier(0.4, 0.2, 0.2, 1);
}

.card-container.flipped { 
transform: rotateY(180deg); 
}

.card-face {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
display: flex;
padding: 3rem 4rem;
color: white;
background: rgba(255,255,255,.04);
backdrop-filter: blur(14px);
-webkit-backdrop-filter: blur(14px);
border-radius: 32px;
}

/* Front: Login */
.card-face:first-child {
transform: rotateY(0deg);
}

/* Back: Register */
.card-face:last-child {
transform: rotateY(180deg);
}

/* ── Material Floating Label ── */
.mat-field {
position: relative;
margin-bottom: 1rem;
}

.mat-field .seapark-input {
background: rgba(255,255,255,.9);
border-radius: 10px;
padding: 16px 16px 6px;
height: 52px;
width: 100%;
color: #123047;
outline: none;
font-size: .95rem;
border: 1px solid rgba(0,0,0,0.1);
transition: box-shadow 0.2s, border-color 0.2s;
margin-bottom: 0;
}

.mat-field .seapark-input::placeholder {
color: transparent;
}

.mat-field .seapark-input:focus {
box-shadow: 0 0 0 3px rgba(255,255,255,0.3);
border-color: #0b87ba;
}

.mat-field label {
position: absolute;
left: 16px;
top: 50%;
transform: translateY(-50%);
font-size: .95rem;
color: #6b7280;
pointer-events: none;
transition: all 0.2s ease;
background: transparent;
padding: 0 2px;
line-height: 1;
}

/* Float label: when focused OR when input has value (not placeholder-shown) */
.mat-field .seapark-input:focus + label,
.mat-field .seapark-input:not(:placeholder-shown) + label {
top: 10px;
transform: translateY(0);
font-size: .72rem;
color: #0b87ba;
font-weight: 600;
}

/* Inputs (standalone, outside mat-field — kept for backwards compat) */
.seapark-input {
background: rgba(255,255,255,.9);
border-radius: 10px;
padding: 0 16px;
height: 44px;
width: 100%;
color: #123047;
outline: none;
font-size: .95rem;
border: 1px solid rgba(0,0,0,0.1);
transition: box-shadow 0.2s;
margin-bottom: 1rem;
}

.seapark-input:focus {
box-shadow: 0 0 0 3px rgba(255,255,255,0.3);
}

.seapark-btn {
border-radius: 10px;
height: 38px;
width: 100%;
background: linear-gradient(90deg,#005c7f,#013b55);
box-shadow: 0 16px 40px rgba(0,59,85,.6);
color: white;
font-weight: 600;
border: none;
cursor: pointer;
transition: all .15s ease;
margin-bottom: 1rem;
}

.seapark-btn:hover {
transform: translateY(-1px);
box-shadow: 0 20px 50px rgba(0,59,85,.7);
}

.regist-btn {
border-radius: 10px;
height: 35px;
border:1px solid rgba(255, 255, 255, 0.216);
width: 100%;
background: transparent;
box-shadow: 0 16px 40px rgba(0, 59, 85, 0.341);
color: white;
font-weight: 100;
cursor: pointer;
transition: all .15s ease;
margin-bottom: 1rem;
}

.regist-btn:hover {
transform: translateY(-1px);
box-shadow: 0 20px 50px rgba(0,59,85,.7);
}

.link {
font-size: .85rem;
cursor: pointer;
transition: opacity 0.2s;
display: block;
text-align: center;
padding: 0.5rem;
}

.link:hover {
opacity: 0.8;
text-decoration: underline;
}

.brand {
display: flex;
flex-direction: column;
justify-content: center;
}

@media(max-width:768px){
.glass-card { 
width: 90vw; 
height: 34rem; 
padding: 2rem; 
}
.card-face { 
padding: 0.5rem 1.5rem !important; 
}
.brand h1 { font-size: 2rem !important; }
}