:root{
    --primary-color:#0084d1;     /* 跟你 portal header 同色系 */
    --primary-dark:#006aa7;
    --text-color:#1f2937;
    --bg-color:#f3f4f6;
    --card-bg:#ffffff;
    --error-color:#b91c1c;
    --border-color:#e5e7eb;
    --shadow: 0 10px 25px rgba(0,0,0,.08);
    --radius: 12px;
}

*{ box-sizing:border-box; }
body{
    margin:0;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans TC", "Helvetica Neue", Arial, "PingFang TC", "Microsoft JhengHei", sans-serif;
    background: linear-gradient(135deg, var(--primary-color), #22c1ff);
    min-height:100vh;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:24px;
    color:var(--text-color);
}

.container{
    width:100%;
    max-width:420px;
}

.card{
    background:var(--card-bg);
    border-radius:var(--radius);
    box-shadow:var(--shadow);
    overflow:hidden;
    border:1px solid rgba(255,255,255,.15);
}

.header{
    padding:20px 22px 12px;
    text-align:center;
}

.logo{
    width:64px;
    height:64px;
    margin:0 auto 10px;
    border-radius:16px;
    background:linear-gradient(135deg, var(--primary-color), #22c1ff);
    display:flex;
    align-items:center;
    justify-content:center;
    color:#fff;
    font-weight:800;
    font-size:18px;
    letter-spacing:.5px;
}

h1{
    margin:0;
    font-size:20px;
    font-weight:800;
}
.subtitle{
    margin:8px 0 0;
    font-size:13px;
    color:#6b7280;
    line-height:1.5;
}

.body{
    padding:18px 22px 22px;
}

.alert{
    border:1px solid #fecaca;
    background:#fef2f2;
    color:var(--error-color);
    border-radius:10px;
    padding:10px 12px;
    margin-bottom:14px;
    font-size:14px;
}
.alert ul{
    margin:0;
    padding-left:18px;
}

.field{ margin-bottom:14px; }
label{
    display:block;
    font-size:13px;
    margin-bottom:6px;
    color:#374151;
    font-weight:600;
}

.input{
    width:100%;
    border:1px solid var(--border-color);
    border-radius:10px;
    padding:11px 12px;
    font-size:15px;
    outline:none;
    background:#fff;
}
.input:focus{
    border-color: rgba(0,132,209,.6);
    box-shadow: 0 0 0 4px rgba(0,132,209,.12);
}
.input.is-invalid{
    border-color:#fca5a5;
}

.field-error{
    margin-top:6px;
    font-size:13px;
    color:var(--error-color);
}

.password-wrap{
    position:relative;
}
.toggle-password{
    position:absolute;
    right:10px;
    top:50%;
    transform:translateY(-50%);
    border:0;
    background:transparent;
    padding:6px;
    border-radius:8px;
    cursor:pointer;
}
.toggle-password:focus{
    outline:none;
    box-shadow: 0 0 0 4px rgba(0,132,209,.12);
}

.btn{
    width:100%;
    border:0;
    border-radius:12px;
    padding:12px 14px;
    font-size:16px;
    font-weight:800;
    color:#fff;
    cursor:pointer;
    background:linear-gradient(135deg, var(--primary-color), #22c1ff);
    transition: transform .08s ease, filter .2s ease;
}
.btn:hover{ filter:brightness(.98); }
.btn:active{ transform: translateY(1px); }

.footer-note{
    text-align:center;
    margin-top:14px;
    font-size:12px;
    color:#fff;
    line-height:1.5;
}

.sr-only{
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip:rect(0,0,0,0);
    border:0;
}