From cadac012e6a95432a5319334fa2dbe183c56ddcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=98=84=EC=84=B1=ED=95=84?= Date: Sat, 15 Nov 2025 16:33:01 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EC=B0=BE=EA=B8=B0=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../static/sass/pages/_account-recovery.scss | 510 ++++++++++++++++++ 1 file changed, 510 insertions(+) create mode 100644 src/main/resources/static/sass/pages/_account-recovery.scss diff --git a/src/main/resources/static/sass/pages/_account-recovery.scss b/src/main/resources/static/sass/pages/_account-recovery.scss new file mode 100644 index 0000000..96b62a0 --- /dev/null +++ b/src/main/resources/static/sass/pages/_account-recovery.scss @@ -0,0 +1,510 @@ +// ----------------------------------------------------------------------------- +// Account Recovery Page Styles (Find ID / Reset Password) - Modern Design +// Matches login.html design system for consistency +// ----------------------------------------------------------------------------- + +.account-recovery-page { + display: flex; + align-items: center; + justify-content: center; + background: #EDF9FE; + padding: 40px 20px; + position: relative; + min-height: calc(100vh - 200px); + margin-top: 60px; + margin-bottom: 60px; + border-radius: 12px; +} + +.account-recovery-container { + width: 100%; + max-width: 540px; + margin: 0 auto; + position: relative; +} + +.account-recovery-card { + background: transparent; + padding: 0; + display: flex; + flex-direction: column; + align-items: center; + position: relative; + + @media (max-width: 576px) { + padding: 0 20px; + } +} + +// Logo +.account-recovery-logo { + width: 90px; + height: 90px; + margin-bottom: 24px; + + img { + width: 100%; + height: 100%; + object-fit: contain; + } +} + +// Title +.account-recovery-title { + font-family: 'Noto Sans KR', sans-serif; + font-size: 28px; + font-weight: 700; + color: #000000; + text-align: center; + margin: 0 0 32px 0; + line-height: 1.3; + + @media (max-width: 576px) { + font-size: 24px; + margin-bottom: 24px; + } +} + +// Tab Navigation +.account-recovery-tabs { + display: flex; + gap: 0; + margin-bottom: 40px; + width: 100%; + background: #F8F9FA; + border-radius: 12px; + padding: 4px; + + .tab-link { + flex: 1; + padding: 14px 24px; + font-family: 'Noto Sans KR', sans-serif; + font-size: 16px; + font-weight: 600; + color: #64748B; + text-decoration: none; + text-align: center; + background: transparent; + border-radius: 8px; + transition: all 0.3s ease; + + &:hover { + color: #0049B4; + background: rgba(0, 73, 180, 0.05); + } + + &.active { + color: #FFFFFF; + background: #0049B4; + box-shadow: 0 2px 4px rgba(0, 73, 180, 0.2); + } + + @media (max-width: 576px) { + padding: 12px 16px; + font-size: 15px; + } + } +} + +// Alert Messages +.account-alert { + width: 100%; + margin-bottom: 20px; + padding: 14px 18px; + border-radius: 12px; + font-family: 'Noto Sans KR', sans-serif; + font-size: 15px; + display: flex; + align-items: center; + gap: 10px; + animation: slideDown 0.3s ease; + + i { + font-size: 18px; + flex-shrink: 0; + } + + &.alert-error { + background: rgba(255, 107, 107, 0.1); + color: #FF6B6B; + border: 1px solid rgba(255, 107, 107, 0.3); + } + + &.alert-success { + background: rgba(107, 207, 127, 0.1); + color: #6BCF7F; + border: 1px solid rgba(107, 207, 127, 0.3); + } + + &.alert-info { + background: rgba(0, 73, 180, 0.1); + color: #0049B4; + border: 1px solid rgba(0, 73, 180, 0.3); + } +} + +// Form +.account-recovery-form { + width: 100%; + margin-bottom: 0; + + .form-group { + margin-bottom: 24px; + + &:last-of-type { + margin-bottom: 0; + } + } + + .form-label { + display: block; + font-family: 'Noto Sans KR', sans-serif; + font-size: 15px; + font-weight: 600; + color: #1A1A2E; + margin-bottom: 10px; + } + + .form-input { + width: 100%; + height: 70px; + padding: 0 24px; + font-family: 'Noto Sans KR', sans-serif; + font-size: 16px; + font-weight: 400; + color: #1A1A2E; + background: #FFFFFF; + border: 1px solid #DDDDDD; + border-radius: 12px; + outline: none; + transition: all 0.3s ease; + + &::placeholder { + color: #94A3B8; + } + + &:hover { + border-color: #CBD5E1; + } + + &:focus { + border-color: #0049B4; + box-shadow: 0 0 0 4px rgba(0, 73, 180, 0.08); + } + + &:disabled { + background: #F8F9FA; + border-color: #E2E8F0; + color: #94A3B8; + cursor: not-allowed; + } + + &.error { + border-color: #FF6B6B; + } + } + + .form-select { + width: 100%; + height: 70px; + padding: 0 24px; + font-family: 'Noto Sans KR', sans-serif; + font-size: 16px; + font-weight: 400; + color: #1A1A2E; + background: #FFFFFF; + border: 1px solid #DDDDDD; + border-radius: 12px; + outline: none; + cursor: pointer; + transition: all 0.3s ease; + appearance: none; + background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L6 6L11 1' stroke='%2364748B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 24px center; + padding-right: 50px; + + &:hover { + border-color: #CBD5E1; + } + + &:focus { + border-color: #0049B4; + box-shadow: 0 0 0 4px rgba(0, 73, 180, 0.08); + } + + &:disabled { + background-color: #F8F9FA; + border-color: #E2E8F0; + color: #94A3B8; + cursor: not-allowed; + opacity: 0.7; + } + + option { + padding: 12px; + font-size: 16px; + } + } +} + +// Phone Input Group +.phone-input-group { + display: flex; + align-items: center; + gap: 12px; + + .phone-prefix { + flex: 0 0 140px; + } + + .phone-middle, + .phone-last { + flex: 1; + } + + .phone-separator { + font-size: 16px; + color: #64748B; + font-weight: 500; + } + + @media (max-width: 576px) { + .phone-prefix { + flex: 0 0 110px; + } + + .phone-separator { + font-size: 14px; + } + } +} + +// Auth Number Group +.auth-number-group { + margin-top: 24px; +} + +.auth-input-group { + position: relative; + + .auth-input { + padding-right: 100px; + } + + .auth-timer { + position: absolute; + right: 24px; + top: 50%; + transform: translateY(-50%); + font-family: 'Noto Sans KR', sans-serif; + font-size: 16px; + font-weight: 600; + color: #FF6B6B; + pointer-events: none; + + @media (max-width: 576px) { + font-size: 14px; + right: 16px; + } + } +} + +// Buttons +.auth-request-button, +.auth-verify-button { + width: 100%; + height: 70px; + padding: 0 32px; + font-family: 'Noto Sans KR', sans-serif; + font-size: 17px; + font-weight: 700; + color: #FFFFFF; + background: #0049B4; + border: none; + border-radius: 12px; + cursor: pointer; + transition: all 0.3s ease; + margin-top: 16px; + line-height: 1; + + &:hover { + background: darken(#0049B4, 5%); + } + + &:active { + background: darken(#0049B4, 10%); + } + + &:disabled { + opacity: 0.6; + cursor: not-allowed; + } + + @media (max-width: 576px) { + height: 60px; + font-size: 16px; + } +} + +// Form Actions +.form-actions { + display: flex; + gap: 12px; + margin-top: 32px; + + .cancel-button, + .submit-button { + flex: 1; + height: 70px; + padding: 0 32px; + font-family: 'Noto Sans KR', sans-serif; + font-size: 17px; + font-weight: 700; + border: none; + border-radius: 12px; + cursor: pointer; + transition: all 0.3s ease; + line-height: 1; + } + + .cancel-button { + color: #64748B; + background: #FFFFFF; + border: 2px solid #E2E8F0; + + &:hover { + background: #F8F9FA; + border-color: #CBD5E1; + color: #475569; + } + + &:active { + background: #F1F5F9; + border-color: #94A3B8; + } + } + + .submit-button { + color: #FFFFFF; + background: #0049B4; + + &:hover { + background: darken(#0049B4, 5%); + } + + &:active { + background: darken(#0049B4, 10%); + } + + &:disabled { + opacity: 0.6; + cursor: not-allowed; + } + } + + @media (max-width: 576px) { + flex-direction: column; + gap: 12px; + + .cancel-button, + .submit-button { + height: 60px; + font-size: 16px; + } + } +} + +// Loading Overlay +.loading-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(237, 249, 254, 0.9); + display: none; + align-items: center; + justify-content: center; + z-index: 1000; + transition: opacity 0.3s ease; + + &.active { + display: flex; + } + + .spinner { + width: 40px; + height: 40px; + border: 3px solid #DDDDDD; + border-top-color: #0049B4; + border-radius: 50%; + animation: spin 1s linear infinite; + } +} + +// Animations +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +@keyframes slideDown { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +// Responsive adjustments +@media (max-width: 768px) { + .account-recovery-page { + padding: 20px 12px; + margin-top: 40px; + margin-bottom: 40px; + } + + .account-recovery-container { + max-width: 100%; + } +} + +@media (max-width: 576px) { + .account-recovery-logo { + width: 70px; + height: 70px; + margin-bottom: 20px; + } + + .account-recovery-form { + .form-group { + margin-bottom: 20px; + } + + .form-label { + font-size: 14px; + margin-bottom: 8px; + } + + .form-input, + .form-select { + height: 60px; + padding: 0 20px; + font-size: 15px; + } + } + + .auth-request-button, + .auth-verify-button { + margin-top: 12px; + } + + .form-actions { + margin-top: 24px; + } +}