App Data 삭제
@@ -353,6 +411,44 @@ async function clearAppData() {
© 2026 돈돼지 가계부. All rights reserved.
+
+
+
+
+
가계부 데이터 초기화
+
+ ⚠️ 내역·계좌·분류·태그·예산·고정지출·투자 내역이 모두 삭제됩니다.
+ 삭제된 데이터는 복구할 수 없습니다.
+ 엑셀 파일로 먼저 백업하시겠습니까?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 데이터 초기화가 완료되었습니다.
+
+
@@ -564,4 +660,116 @@ async function clearAppData() {
font-size: 0.78rem;
opacity: 0.5;
}
+
+/* 데이터 초기화 모달 */
+.reset-backdrop {
+ position: fixed;
+ inset: 0;
+ z-index: 2500;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 1.5rem;
+ background: rgba(0, 0, 0, 0.55);
+}
+.reset-modal {
+ width: 100%;
+ max-width: 360px;
+ padding: 1.6rem 1.4rem 1.4rem;
+ border-radius: 14px;
+ background: var(--color-background);
+ border: 1px solid var(--color-border);
+}
+.reset-title {
+ font-size: 1.05rem;
+ font-weight: 700;
+ color: #c0392b;
+ margin-bottom: 0.9rem;
+}
+.reset-warn {
+ font-size: 0.88rem;
+ line-height: 1.65;
+ opacity: 0.85;
+ margin-bottom: 1.3rem;
+}
+.reset-actions {
+ display: flex;
+ flex-direction: column;
+ gap: 0.55rem;
+}
+.reset-btn {
+ width: 100%;
+ padding: 0.7rem 1rem;
+ border-radius: 8px;
+ font-size: 0.9rem;
+ font-weight: 600;
+ cursor: pointer;
+ border: 1px solid var(--color-border);
+ background: var(--color-background-soft);
+ color: var(--color-text);
+ text-align: center;
+}
+.reset-btn.export {
+ border-color: hsla(160, 100%, 37%, 1);
+ color: hsla(160, 100%, 37%, 1);
+}
+.reset-btn.danger {
+ border-color: #c0392b;
+ color: #c0392b;
+}
+.reset-btn.cancel {
+ opacity: 0.6;
+}
+
+/* 삭제 진행 상태바 */
+.reset-progress-wrap {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ z-index: 3000;
+ background: var(--color-background-soft);
+ border-bottom: 1px solid var(--color-border);
+ padding: 0.6rem 1rem 0.5rem;
+ display: flex;
+ flex-direction: column;
+ gap: 0.4rem;
+}
+.reset-progress-bar {
+ height: 3px;
+ border-radius: 2px;
+ background: linear-gradient(90deg, hsla(160,100%,37%,1) 0%, hsla(160,100%,37%,0.3) 100%);
+ background-size: 200% 100%;
+ animation: progress-slide 1.2s linear infinite;
+}
+@keyframes progress-slide {
+ 0% { background-position: 200% 0; }
+ 100% { background-position: -200% 0; }
+}
+.reset-progress-label {
+ font-size: 0.82rem;
+ opacity: 0.75;
+}
+
+/* 완료 토스트 */
+.reset-toast {
+ position: fixed;
+ bottom: 2rem;
+ left: 50%;
+ transform: translateX(-50%);
+ z-index: 3000;
+ padding: 0.65rem 1.3rem;
+ border-radius: 999px;
+ background: #2ecc71;
+ color: #fff;
+ font-size: 0.88rem;
+ font-weight: 600;
+ white-space: nowrap;
+ box-shadow: 0 4px 16px rgba(0,0,0,0.18);
+ animation: toast-in 0.2s ease;
+}
+@keyframes toast-in {
+ from { opacity: 0; transform: translateX(-50%) translateY(8px); }
+ to { opacity: 1; transform: translateX(-50%) translateY(0); }
+}