Skip to content

Commit 37e7515

Browse files
committed
style: add Feishu-style auth split layout CSS classes
1 parent f57aa1d commit 37e7515

1 file changed

Lines changed: 313 additions & 0 deletions

File tree

vue/src/assets/blog.css

Lines changed: 313 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3540,3 +3540,316 @@ body {
35403540
color: var(--muted, #6b7280);
35413541
}
35423542

3543+
/* ================
3544+
Auth split layout (Feishu style)
3545+
================ */
3546+
.auth-split-bg {
3547+
min-height: 100svh;
3548+
background: #f0f2f5;
3549+
display: flex;
3550+
align-items: center;
3551+
justify-content: center;
3552+
padding: 24px;
3553+
}
3554+
3555+
[data-theme='dark'] .auth-split-bg {
3556+
background: #0f1114;
3557+
}
3558+
3559+
.auth-split-card {
3560+
display: flex;
3561+
width: 780px;
3562+
max-width: 100%;
3563+
background: #fff;
3564+
border-radius: 12px;
3565+
overflow: hidden;
3566+
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06);
3567+
}
3568+
3569+
[data-theme='dark'] .auth-split-card {
3570+
background: #1a1a1a;
3571+
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.35);
3572+
}
3573+
3574+
/* Brand panel (left) */
3575+
.auth-brand {
3576+
width: 340px;
3577+
flex-shrink: 0;
3578+
background: linear-gradient(160deg, #3370ff, #5b47b0);
3579+
color: #fff;
3580+
padding: 56px 40px;
3581+
display: flex;
3582+
flex-direction: column;
3583+
justify-content: center;
3584+
}
3585+
3586+
.auth-brand-logo {
3587+
width: 48px;
3588+
height: 48px;
3589+
background: rgba(255, 255, 255, 0.18);
3590+
border-radius: 12px;
3591+
display: flex;
3592+
align-items: center;
3593+
justify-content: center;
3594+
font-size: 24px;
3595+
margin-bottom: 24px;
3596+
}
3597+
3598+
.auth-brand-title {
3599+
font-size: 26px;
3600+
font-weight: 700;
3601+
letter-spacing: -0.02em;
3602+
margin-bottom: 12px;
3603+
}
3604+
3605+
.auth-brand-sub {
3606+
font-size: 14px;
3607+
line-height: 1.8;
3608+
opacity: 0.82;
3609+
white-space: pre-line;
3610+
}
3611+
3612+
.auth-brand-footer {
3613+
font-size: 12px;
3614+
opacity: 0.5;
3615+
margin-top: 40px;
3616+
}
3617+
3618+
/* Form panel (right) */
3619+
.auth-form {
3620+
flex: 1;
3621+
min-width: 0;
3622+
padding: 48px 44px;
3623+
}
3624+
3625+
/* Underline tabs */
3626+
.auth-tabs {
3627+
display: flex;
3628+
gap: 32px;
3629+
border-bottom: 1px solid #ebecef;
3630+
margin-bottom: 28px;
3631+
}
3632+
3633+
[data-theme='dark'] .auth-tabs {
3634+
border-bottom-color: #2a2a2e;
3635+
}
3636+
3637+
.auth-tab {
3638+
padding: 0 0 12px;
3639+
font-size: 15px;
3640+
cursor: pointer;
3641+
border: none;
3642+
background: none;
3643+
font-weight: 400;
3644+
color: #8f959e;
3645+
margin-bottom: -1px;
3646+
border-bottom: 2px solid transparent;
3647+
transition: color 0.2s;
3648+
font-family: inherit;
3649+
}
3650+
3651+
.auth-tab:hover {
3652+
color: #646a73;
3653+
}
3654+
3655+
[data-theme='dark'] .auth-tab:hover {
3656+
color: #bbb;
3657+
}
3658+
3659+
.auth-tab.active {
3660+
font-weight: 600;
3661+
color: #1f2329;
3662+
border-bottom-color: #3370ff;
3663+
}
3664+
3665+
[data-theme='dark'] .auth-tab.active {
3666+
color: #e5e7eb;
3667+
}
3668+
3669+
/* Form fields */
3670+
.auth-field {
3671+
margin-bottom: 20px;
3672+
}
3673+
3674+
.auth-label {
3675+
font-size: 13px;
3676+
color: #646a73;
3677+
font-weight: 500;
3678+
margin-bottom: 6px;
3679+
}
3680+
3681+
[data-theme='dark'] .auth-label {
3682+
color: #9ca3af;
3683+
}
3684+
3685+
.auth-input {
3686+
width: 100%;
3687+
padding: 10px 14px;
3688+
border: 1px solid #dee0e3;
3689+
border-radius: 8px;
3690+
font-size: 14px;
3691+
outline: none;
3692+
box-sizing: border-box;
3693+
background: #f5f6f7;
3694+
color: #1f2329;
3695+
transition: border-color 0.2s, background 0.2s;
3696+
font-family: inherit;
3697+
}
3698+
3699+
.auth-input::placeholder {
3700+
color: #bbb;
3701+
}
3702+
3703+
.auth-input:focus {
3704+
border-color: #3370ff;
3705+
background: #fff;
3706+
}
3707+
3708+
[data-theme='dark'] .auth-input {
3709+
background: #2a2a2e;
3710+
border-color: #3a3a3e;
3711+
color: #e5e7eb;
3712+
}
3713+
3714+
[data-theme='dark'] .auth-input:focus {
3715+
background: #1f1f22;
3716+
border-color: #3370ff;
3717+
}
3718+
3719+
/* Submit button */
3720+
.auth-submit {
3721+
width: 100%;
3722+
padding: 10px 0;
3723+
border-radius: 8px;
3724+
background: #3370ff;
3725+
color: #fff;
3726+
font-weight: 600;
3727+
font-size: 15px;
3728+
border: none;
3729+
cursor: pointer;
3730+
letter-spacing: 0.5px;
3731+
transition: background 0.2s;
3732+
font-family: inherit;
3733+
}
3734+
3735+
.auth-submit:hover {
3736+
background: #2860e0;
3737+
}
3738+
3739+
.auth-submit:disabled {
3740+
opacity: 0.6;
3741+
cursor: not-allowed;
3742+
}
3743+
3744+
[data-theme='dark'] .auth-submit:hover {
3745+
background: #4a7fff;
3746+
}
3747+
3748+
/* Footer links */
3749+
.auth-footer {
3750+
display: flex;
3751+
justify-content: space-between;
3752+
align-items: center;
3753+
margin-top: 18px;
3754+
font-size: 13px;
3755+
}
3756+
3757+
.auth-link {
3758+
color: #3370ff;
3759+
cursor: pointer;
3760+
border: none;
3761+
background: none;
3762+
padding: 0;
3763+
font: inherit;
3764+
text-decoration: none;
3765+
}
3766+
3767+
.auth-link:hover {
3768+
text-decoration: underline;
3769+
}
3770+
3771+
.auth-muted {
3772+
color: #8f959e;
3773+
}
3774+
3775+
[data-theme='dark'] .auth-muted {
3776+
color: #6b7280;
3777+
}
3778+
3779+
/* Error / Success alerts */
3780+
.auth-alert {
3781+
padding: 10px 14px;
3782+
border-radius: 8px;
3783+
font-size: 13px;
3784+
display: flex;
3785+
align-items: center;
3786+
gap: 8px;
3787+
margin-bottom: 16px;
3788+
}
3789+
3790+
.auth-alert--error {
3791+
background: #fff2f0;
3792+
border: 1px solid #ffccc7;
3793+
color: #cf1322;
3794+
}
3795+
3796+
[data-theme='dark'] .auth-alert--error {
3797+
background: #2c1618;
3798+
border-color: #5c2022;
3799+
color: #f5c6cb;
3800+
}
3801+
3802+
.auth-alert--success {
3803+
background: #f6ffed;
3804+
border: 1px solid #b7eb8f;
3805+
color: #389e0d;
3806+
}
3807+
3808+
[data-theme='dark'] .auth-alert--success {
3809+
background: #162c18;
3810+
border-color: #2c5c20;
3811+
color: #c6f5ca;
3812+
}
3813+
3814+
/* Email hint */
3815+
.auth-hint {
3816+
margin-top: 6px;
3817+
font-size: 12px;
3818+
color: #bbb;
3819+
}
3820+
3821+
[data-theme='dark'] .auth-hint {
3822+
color: #666;
3823+
}
3824+
3825+
/* Auth terms */
3826+
.auth-terms {
3827+
text-align: center;
3828+
font-size: 13px;
3829+
color: #8f959e;
3830+
margin-top: 16px;
3831+
}
3832+
3833+
[data-theme='dark'] .auth-terms {
3834+
color: #6b7280;
3835+
}
3836+
3837+
/* Responsive: mobile */
3838+
@media (max-width: 640px) {
3839+
.auth-brand {
3840+
display: none;
3841+
}
3842+
3843+
.auth-split-card {
3844+
width: 100%;
3845+
}
3846+
3847+
.auth-form {
3848+
padding: 32px 24px;
3849+
}
3850+
3851+
.auth-tabs {
3852+
gap: 20px;
3853+
}
3854+
}
3855+

0 commit comments

Comments
 (0)