/* ==========================================================================
   DESIGN SYSTEM & VARIABLES (Pusat Kendali Data / Anti Double)
   ==========================================================================
*/
:root {
	--font-main: 'Inter', sans-serif;
	
	/* Light Mode Palette */
	--bg-app: #f1f5f9;
	--bg-card: #ffffff;
	--text-main: #0f172a;
	--text-muted: #64748b;
	--border-color: #e2e8f0;
	
	/* Semantic Colors */
	--blue: #3b82f6;
	--blue-light: rgba(59, 130, 246, 0.12);
	
	--emerald: #10b981;
	--emerald-light: rgba(16, 185, 129, 0.12);
	
	--amber: #f59e0b;
	--amber-light: rgba(245, 158, 11, 0.12);
	
	--rose: #f43f5e;
	--rose-light: rgba(244, 63, 94, 0.12);
	
	--indigo: #6366f1;
	--indigo-light: rgba(99, 102, 241, 0.12);
	
	--purple: #9333ea;
	--purple-light: rgba(147, 51, 234, 0.12);

	/* Gradients */
	--rose-gradient: linear-gradient(135deg, #f43f5e, #fda4af);
	
	/* Shadows & Radius */
	--shadow-sm: 0 1px 3px rgba(0,0,0,0.05);
	--shadow-md: 0 4px 6px -1px rgba(0,0,0,0.05), 0 2px 4px -1px rgba(0,0,0,0.03);
	--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.05);
	--radius-lg: 24px;
	--radius-md: 16px;
	--radius-sm: 12px;
}

/* Dark Mode Overrides (Menimpa Variabel, Layout Tetap Sama) */
html.dark {
	--bg-app: #0f172a;
	--bg-card: #1e293b;
	--text-main: #f8fafc;
	--text-muted: #94a3b8;
	--border-color: #334155;
	
	--blue-light: rgba(59, 130, 246, 0.2);
	--emerald-light: rgba(16, 185, 129, 0.2);
	--amber-light: rgba(245, 158, 11, 0.2);
	--rose-light: rgba(244, 63, 94, 0.2);
	--indigo-light: rgba(99, 102, 241, 0.2);
	--purple-light: rgba(147, 51, 234, 0.12);
	
	/* REVISI SHADOW DARK MODE: shadow disesuaikan dengan kontras malam hari */
	--shadow-md: 0 4px 6px -1px rgba(0,0,0,0.2);
	--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.3);
}

/* ==========================================================================
   BASE & RESET + NATIVE RIGID LOCK
   ==========================================================================
*/
html {
	/* Mengunci html agar tidak ikut tergeser atau membal */
	overflow: hidden;
	height: 100%;
	overscroll-behavior: none;
}

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	-webkit-tap-highlight-color: transparent;
}

body {
	font-family: var(--font-main);
	/* REVISI TASKBAR: Selaraskan background luar dengan warna top taskbar premium */
	background-color: #0b172b; 
	color: var(--text-main);
	display: flex;
	justify-content: center;
	min-height: 100vh;
	
	/* Kunci mati dimensi body biar ga ada celah goyang */
	height: 100%;
	width: 100%;
	overflow: hidden; 
	position: fixed; /* Trik pamungkas mengunci viewport iOS/Android */
	
	/* Matikan semua interaksi bouncing bawaan sistem browser */
	overscroll-behavior: none; 
	-webkit-overflow-scrolling: none;
}

/* Helper & Utility Classes */
.font-bold { font-weight: 700; }
.text-emerald { color: var(--emerald) !important; }
.text-rose { color: var(--rose) !important; }
.text-amber { color: var(--amber) !important; }
.text-blue { color: var(--blue) !important; }
.text-indigo { color: var(--indigo) !important; }
.text-purple { color: var(--purple) !important; }

.bg-light-emerald { background-color: var(--emerald-light); }
.bg-light-rose { background-color: var(--rose-light); }
.bg-light-amber { background-color: var(--amber-light); }
.bg-light-blue { background-color: var(--blue-light); }
.bg-light-indigo { background-color: var(--indigo-light); }
.bg-light-purple { background-color: var(--purple-light); }

.bg-blue-gradient { background: linear-gradient(135deg, #3b82f6, #2563eb); }
.bg-emerald-gradient { background: linear-gradient(135deg, #10b981, #059669); }
.bg-amber-gradient { background: linear-gradient(135deg, #f59e0b, #d97706); }
.bg-rose-gradient { background: linear-gradient(135deg, #f43f5e, #be123c); }
.bg-purple-gradient { background: linear-gradient(135deg, #9333ea, #6d28d9); }

.border-x { border-left: 1px solid var(--border-color); border-right: 1px solid var(--border-color); }
.text-center { text-align: center; }
.text-right { text-align: right; }
.mr-4 { margin-right: 8px; }
.mr-5 { margin-right: 10px; }
.hidden { display: none !important; }

/* Width Utilities for Progress Bar */
.w-15 { width: 15%; }
.w-40 { width: 40%; }
.w-72-5 { width: 72.5%; }

/* ==========================================================================
   APP SHELL LAYOUT & MAIN CONTENT
   ==========================================================================
*/
#app-container {
	width: 100%;
	max-width: 425px;
	
	/* Menggunakan height 100% dari parent yang sudah di-lock fixed */
	height: 100%;
	height: calc(var(--vh, 1vh) * 100); 		
	
	background-color: var(--bg-app);
	color: var(--text-main);
	position: relative;
	
	/* Kunci total! Elemen di dalam tidak boleh bikin container luar melar */
	overflow: hidden; 
	display: flex;
	flex-direction: column;
	box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
	
	/* Double lock anti pull-to-refresh & anti goyang horizontal */
	overscroll-behavior: none; 
}

#main-content {
	flex: 1;
	display: flex;
	flex-direction: column;
	
	/* Pastikan area pembungkus ini juga kaku mati */
	overflow: hidden;
	height: 100%;
	position: relative;
	transition: opacity 0.4s ease, transform 0.4s ease;
}

.scroll-container {
	flex: 1;
	overflow-y: scroll; 
	overflow-x: hidden;		
	-webkit-overflow-scrolling: touch; 
	overscroll-behavior-y: contain; 
	overscroll-behavior-x: none;		
	padding: 90px 20px calc(100px + env(safe-area-inset-bottom)) 20px; 
	display: flex;
	flex-direction: column;
	gap: 16px;
}

/* Sembunyikan Scrollbar biar Estetik Elegan */
.scroll-container::-webkit-scrollbar {
	display: none;
	width: 0px;
}

.feature-buttons-row {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 6px;
	width: 100%;
	margin-bottom: -4px !important; /* Menarik naik card di bawahnya agar gap pas seimbang */
}

/* ==========================================================================
   HEADER SECTION
   ==========================================================================
*/
.main-header {
	position: fixed;
	top: 0;
	left: 50%;
	transform: translateX(-50%);	
	width: 100%;
	max-width: 425px;
	height: 70px;
	padding: 16px 20px;
	background-color: transparent; 
	
	display: flex;
	justify-content: space-between;
	align-items: center;
	
	z-index: 10001 !important; 
	box-shadow: none; 
}

.main-header.scrolled {
	box-shadow: 0 4px 18px rgba(15, 23, 42, 0.08), 0 2px 6px rgba(15, 23, 42, 0.04);
	border-bottom-color: transparent;
	background-color: var(--bg-card);
}
html.dark .main-header.scrolled {
	box-shadow: 0 4px 22px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.4) !important;
	background-color: var(--bg-app);
}

.user-profile-section {
	display: flex;
	align-items: center;
	gap: 12px;
}

.avatar-wrapper {
	width: 46px;
	height: 46px;
	border-radius: 50%;
	overflow: hidden;
	border: 2px solid var(--emerald);
	cursor: pointer;
}
.avatar-wrapper:active {
	transform: scale(0.95);
}
.avatar-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.user-info h3 {
	font-size: 12px;
	font-weight: 500;
	color: var(--text-muted);
}
.user-info h2 {
	font-size: 16px;
	font-weight: 700;
	color: var(--text-main);
}
.current-date {
	font-size: 10px;
	color: var(--text-muted);
	margin-top:1.5px;
}		

/* Theme Toggle Component */
#theme-toggle {
	width: 54px;
	height: 28px;
	background-color: var(--border-color);
	border-radius: 9999px;
	position: relative;
	cursor: pointer;
	overflow: hidden;
	transition: background-color 0.3s ease;
}
#toggle-bg {
	width: 24px;
	height: 24px;
	background-color: var(--emerald); 
	border-radius: 50%;
	position: absolute;
	left: 2px;
	top: 2px;
	transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
	z-index: 1;
	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}
.toggle-icons-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	width: 100%;
	height: 100%;
	position: absolute;
	top: 0;
	left: 0;
	z-index: 2; 
	pointer-events: none; 
}
.icon-slot {
	display: flex;
	justify-content: center;
	align-items: center;
	font-size: 11px;
	transition: color 0.3s ease;
}
.slot-left { color: #ffffff; }
.slot-right { color: var(--text-muted); }

html.dark #toggle-bg {
	transform: translateX(26px);
	background-color: var(--indigo); 
}
html.dark .slot-left { color: var(--text-muted); }
html.dark .slot-right { color: #ffffff; }

/* ==========================================================================
   CARD SALDO
   ==========================================================================
*/
.card-saldo {
	background-color: var(--bg-card);
	border-radius: var(--radius-lg);
	padding: 20px;
	box-shadow: var(--shadow-md);
	border: 1px solid var(--border-color);
}
.card-label {
	font-size: 10px;
	color: var(--text-muted);
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: 0.05em;
}
.card-balance {
	font-size: 25px;
	font-weight: 700;
	margin: 4px 0 15px 0;
	letter-spacing: -0.5px;
}
.card-footer-grid {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr;
	gap: 4px;
	padding-top: 15px;
	border-top: 1px dashed var(--border-color);
}
.footer-col p:first-child {
	font-size: 9px;
	color: var(--text-muted);
	margin-bottom: 2px;
}
.footer-col p:last-child {
	font-size: 11px;
}

/* ==========================================================================
   FEATURE BUTTON (WIDGET SWITCHER)
   ==========================================================================
*/
.circle-btn-wrapper {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	cursor: pointer;
	flex: 1;			
}
.circle-icon {
	width: 50px;
	height: 50px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 18px;
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.circle-btn-wrapper span {
	font-size: 11px;
	font-weight: 500;
	color: var(--text-muted);
}

/* Active State & Visual Feedback Premium */
.circle-btn-wrapper.active span { font-weight: 600; }

.circle-btn-wrapper.active.focused-health .circle-icon { 
	transform: translateY(-2px); box-shadow: 0 8px 12px var(--blue-light); border: 2px solid var(--blue); 
}
.circle-btn-wrapper.active.focused-health span { color: var(--blue) !important; }

.circle-btn-wrapper.active.focused-pocket .circle-icon { 
	transform: translateY(-2px); box-shadow: 0 8px 12px var(--emerald-light); border: 2px solid var(--emerald); 
}
.circle-btn-wrapper.active.focused-pocket span { color: var(--emerald) !important; }

.circle-btn-wrapper.active.focused-goals .circle-icon { 
	transform: translateY(-2px); box-shadow: 0 8px 12px var(--purple-light); border: 2px solid var(--purple); 
}
.circle-btn-wrapper.active.focused-goals span { color: var(--purple) !important; }

.circle-btn-wrapper.active.focused-gold .circle-icon { 
	transform: translateY(-2px); box-shadow: 0 8px 12px var(--amber-light); border: 2px solid var(--amber); 
}
.circle-btn-wrapper.active.focused-gold span { color: var(--amber) !important; }

.circle-btn-wrapper.active.focused-paylater .circle-icon { 
	transform: translateY(-2px); box-shadow: 0 8px 12px var(--rose-light); border: 2px solid var(--rose); 
}
.circle-btn-wrapper.active.focused-paylater span { color: var(--rose) !important; }

/* ==========================================================================
   FEATURE - WIDGET DISPLAY
   ==========================================================================
*/
.widget-display-box {
	background-color: var(--bg-card);
	border-radius: var(--radius-md);
	padding: 16px;
	padding-top: 15px;
	box-shadow: var(--shadow-sm);
	border: 1px solid var(--border-color);
	box-sizing: border-box; 
	overflow: visible; 
	height: auto;
	min-height: auto;
}

.widget-pane {
	animation: fadeInWidget 0.25s ease-in-out;
	height: auto;
	overflow: visible;
}

@keyframes fadeInWidget { 
	from { opacity: 0; transform: translateY(3px); } 
	to { opacity: 1; transform: translateY(0); } 
}

.widget-pane-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 16px;
}
.widget-pane-header h5 {
	font-size: 13px;
	font-weight: 600;
	margin: 0;
}
.badge-status {
	font-size: 10px;
	padding: 4px 8px;
	border-radius: 999px;
	font-weight: 600;
}
.widget-action-btn-box {
	width: 24px;
	height: 24px;
	border-radius: 6px;
	background-color: var(--bg-app);
	border: 1px solid var(--border-color);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 12px;
	cursor: pointer;
}    
.widget-action-btn-box:active { transform: scale(0.9); }

.widget-pane-desc {
	font-size: 11px;
	color: var(--text-muted);
	margin-bottom: 12px;
	line-height: 1.5;
}

/* Multi Pocket & Grid Layouts */
.pocket-list-grid {
	display: grid;
	gap: 12px;
	width: 100%;
	box-sizing: border-box;
	margin-bottom: 4px; 
}
.pocket-grid-2-2 { grid-template-columns: 1fr 1fr; }
.pocket-grid-full { grid-template-columns: 1fr; }

.pocket-mini-item {
	background-color: var(--bg-app);
	border: 1px solid var(--border-color);
	padding: 15px 12px;
	border-radius: var(--radius-sm);
	display: flex;
	flex-direction: column;
	gap: 2px;
	box-sizing: border-box;
}
.pocket-mini-item.pocket { padding: 10px 12px; }
.pocket-title { font-size: 10px; color: var(--text-muted); }
.pocket-val { font-size: 13px; color: var(--text-main); margin-top: 3px; }

/* Progress Bars Components */
.progress-bar-container {
	width: 100%;
	height: 9px;
	background-color: var(--border-color);
	border-radius: 999px;
	overflow: hidden;
	margin: 12px 0 6px 0;
}
.progress-bar-fill { height: 100%; border-radius: 999px; }
.progress-bar-labels {
	display: flex;
	justify-content: space-between;
	font-size: 10px;
	color: var(--text-muted);
	margin-top: auto;
	width: 100%;
	box-sizing: border-box;
}

.health-progress-container { height: 9px; margin: 14px 0 8px 0; }
.health-progress-fill { width: 5.6%; } 
.health-progress-labels { font-size: 10px; font-weight: 500; margin-top: 12px;}

.goal-box-item { 
	background-color: var(--bg-app); 
	border: 1px solid var(--border-color);
	padding: 14px 12px; 
	border-radius: var(--radius-sm);
	display: flex;
	flex-direction: column;
	box-sizing: border-box;
	width: 100%;
}
.goal-meta-top { display: flex; justify-content: space-between; align-items: center; font-size: 11.5px; }

#widget-gold .progress-bar-labels {
	border-top: 1px solid var(--border-color);
	margin-top: 15px;
	padding-top: 13px;
	font-size: 11px;
	color: var(--text-muted);
	display: flex;
	justify-content: space-between;
	align-items: center;
	width: 100%;
	box-sizing: border-box;
}

/* ==========================================================================
   HABIT STREAK DISIPLIN TRACKER
   ==========================================================================
*/
.habit-streak-section {
	background-color: var(--bg-card);
	border-radius: var(--radius-md);
	padding: 16px;
	box-shadow: var(--shadow-sm);
	border: 1px solid var(--border-color);
}
.habit-header-flex {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 14px;
}
.section-title { font-size: 11px; font-weight: 600; text-transform: uppercase; margin-top: 2px; }
.streak-count-badge {
	font-size: 11px;
	background-color: var(--rose-light);
	color: var(--rose);
	padding: 4px 10px;
	border-radius: 999px;
	font-weight: 600;
}
.streak-days-row { display: flex; justify-content: space-between; gap: 4px; margin-bottom: 14px; }
.day-bubble { display: flex; flex-direction: column; align-items: center; gap: 6px; flex: 1; }
.day-name { font-size: 10px; color: var(--text-muted); }
.day-bubble .bubble-icon {
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background-color: var(--bg-app);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 11px;
	color: var(--text-muted);
}
.day-bubble.done .bubble-icon { background-color: var(--emerald); color: #ffffff; }
.day-bubble.current .bubble-icon { border: 2px solid var(--rose); color: var(--rose); background-color: transparent; }

.btn-safe-habit-check {
	width: 100%;
	padding: 12px;
	background-color: var(--text-main);
	color: var(--bg-card);
	border: none;
	border-radius: var(--radius-sm);
	font-family: var(--font-main);
	font-size: 12px;
	font-weight: 600;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	cursor: pointer;
}
.btn-safe-habit-check:active { transform: scale(0.98); }
.btn-safe-habit-check.habit-completed {
	background-color: var(--emerald-light) !important;
	color: var(--emerald) !important;
	cursor: default;
	pointer-events: none;
}

/* ==========================================================================
   FILTER PERIODE SECTION & POPOVER DIALOG
   ==========================================================================
*/
.filter-periode-section { display: flex; flex-direction: column; gap: 12px; }
.section-header-flex { display: flex; justify-content: space-between; align-items: center; position: relative; }

#popover-trigger {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	background-color: var(--bg-card);
	padding: 6px 12px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 600;
	cursor: pointer;
	border: 1px solid var(--border-color);
	line-height: 1;
}
#popover-trigger .icon-cal { 
	color: var(--text-main); display: inline-flex; align-items: center; line-height: 1; position: relative; top: -1px; margin-right: 1px;
}
#popover-trigger .icon-arrow { font-size: 9px; color: var(--text-muted); }

#popover-menu {
	position: absolute;
	top: 36px;
	right: 0;
	width: 240px;
	background-color: var(--bg-card);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-lg);
	border: 1px solid var(--border-color);
	z-index: 100;
	padding: 12px;
}
.popover-year-nav { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; padding: 0 4px; }
#popover-year-text { font-size: 13px; font-weight: 700; color: var(--text-main); }
.popover-year-nav i { font-size: 10px; color: var(--text-muted); cursor: pointer; padding: 4px 8px; border-radius: 4px; }
.popover-year-nav i:hover { background-color: var(--bg-app); color: var(--text-main); }

#months-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.month-btn { padding: 8px 0; font-size: 11px; text-align: center; border-radius: 8px; cursor: pointer; color: var(--text-main); font-weight: 500; }
.month-btn:hover:not(.disabled) { background-color: var(--bg-app); }
.month-btn.active { background-color: var(--text-main) !important; color: var(--bg-card) !important; font-weight: 600; }
.month-btn.disabled { color: var(--text-muted) !important; cursor: not-allowed; opacity: 0.4; }

.popover-footer { display: flex; justify-content: space-between; margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--border-color); font-size: 10px; font-weight: 600; }
#clear-popover { color: var(--text-muted); cursor: pointer; }
#this-month-popover { color: var(--text-main); cursor: pointer; }

.summary-boxes-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.summary-box { background-color: var(--bg-card); padding: 18px 15px; border-radius: var(--radius-sm); box-shadow: var(--shadow-sm); border: 1px solid var(--border-color); }
.summary-box p:first-child { font-size: 10px; color: var(--text-muted); margin-bottom: 5px; }
.summary-box p:last-child { font-size: 15px; font-weight: 700; }

/* ==========================================================================
   DATA LIST VIEW (TRANSAKSI & TAGIHAN / HUTANG)
   ==========================================================================
*/
.list-section { display: flex; flex-direction: column; gap: 12px; }
.btn-pdf-flat {
	display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 500; color: var(--text-muted); cursor: pointer; padding: 6px 12px; border: 1px solid var(--border-color); border-radius: 999px; background-color: transparent;
}
.btn-pdf-flat i { color: var(--rose); font-size: 13px; display: inline-flex; align-items: center; line-height: 1; }
.btn-pdf-flat:hover { background-color: var(--border-color); color: var(--text-main); border-color: var(--text-muted); }

.debt-filter-container { display: flex; gap: 6px; overflow-x: auto; }
.debt-filter-container::-webkit-scrollbar { display: none; }
.debt-filter-chip { padding: 6px 12px; background-color: var(--bg-card); border: 1px solid var(--border-color); font-size: 11px; border-radius: 999px; white-space: nowrap; cursor: pointer; color: var(--text-muted); }
.debt-filter-chip.active { background-color: var(--text-main); color: var(--bg-card); border-color: var(--text-main); font-weight: 500; }

.items-stack { display: flex; flex-direction: column; gap: 8px; }
.card-item { background-color: var(--bg-card); border-radius: var(--radius-sm); padding: 12px; display: flex; justify-content: space-between; align-items: center; border: 1px solid var(--border-color); margin-bottom: 3px; }

.item-left-content { display: flex; align-items: center; gap: 12px; }
.icon-box-bg { width: 38px; height: 38px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 14px; }
.icon-circle-bg { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 14px; }
.item-main-title { font-size: 12px; font-weight: 600; color: var(--text-main); margin-bottom: 3px; }
.item-sub-date { font-size: 10px; color: var(--text-muted); display: flex; align-items: center; gap: 4px; }
.tag-label { font-size: 9px; padding: 2px 6px; border-radius: 4px; font-weight: 600; display: inline-block; }
.item-right-content { text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.item-amount { font-size: 12px; font-weight: 700; }
.item-time-stamp { font-size: 9px; color: var(--text-muted); }

.badge { font-size: 9px; padding: 3px 8px; border-radius: 999px; font-weight: 600; }
.badge-rose { background-color: var(--rose-light); color: var(--rose); }
.badge-amber { background-color: var(--amber-light); color: var(--amber); }
.badge-emerald { background-color: var(--emerald-light); color: var(--emerald); }

.border-rose-alert { border-left: 4px solid var(--rose) !important; border-color: var(--rose) !important; }
.border-amber-alert { border-left: 4px solid var(--amber) !important; border-color: var(--amber) !important; }
.border-emerald-alert { border-left: 4px solid var(--emerald) !important; border-color: var(--emerald) !important; }

.empty-state { text-align: center; padding: 20px 16px; background-color: var(--bg-card); border-radius: var(--radius-sm); border: 1px dashed var(--border-color); }
.empty-icon-circle { width: 44px; height: 44px; border-radius: 50%; background-color: var(--bg-app); color: var(--text-muted); display: flex; align-items: center; justify-content: center; margin: 0 auto 10px auto; font-size: 16px; }
.empty-title { font-size: 12px; font-weight: 600; color: var(--text-main); margin-bottom: 2px; }
.empty-desc { font-size: 10px; color: var(--text-muted); line-height: 1.4; }

.transaction-filter-container { display: flex; width: 100%; gap: 8px; margin: 16px 0; box-sizing: border-box; }
.tx-filter-chip { flex: 1; text-align: center; padding: 8px 12px; background-color: var(--bg-card); border: 1px solid var(--border-color); font-size: 11px; border-radius: 999px; white-space: nowrap; cursor: pointer; color: var(--text-muted); font-weight: 500; user-select: none; }
.tx-filter-chip.active { background-color: var(--text-main); color: var(--bg-card); border-color: var(--text-main); }

/* ==========================================================================
   PREMIUM STICKY BOTTOM APP NAVIGATION BAR (FIXED POSITION)
   ==========================================================================
*/
#app-nav {
	position: fixed; 
	bottom: 0;
	left: 50%;
	transform: translateX(-50%);		
	width: 100%;
	max-width: 425px; 
	height: 65px;
	background-color: var(--bg-card);
	border-top: 1px solid var(--border-color);
	display: flex;
	justify-content: space-between;
	align-items: center;		
	padding: 0;
	box-sizing: content-box; 
	z-index: 9999;
	box-shadow: 0 -4px 12px -2px rgba(0, 0, 0, 0.03), 0 -2px 4px -1px rgba(0, 0, 0, 0.02);
}

html.dark #app-nav {
	background-color: var(--bg-app); 
}

.nav-item {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 2px;
	flex: 1;
	height: 68px; 
	cursor: pointer;
	color: var(--text-muted);
	transition: color 0.2s ease;
	position: relative;
}
.nav-item i { font-size: 21px; margin-bottom: 6px; }
.nav-item span { font-size: 10px; font-weight: 500; }

.nav-item.active { color: var(--emerald); }
.nav-item.active::after {
	content: ''; position: absolute; top: 0; width: 24px; height: 3px; background-color: var(--emerald); border-radius: 0 0 4px 4px; animation: tab-line-fade 0.2s ease-out;
}

@keyframes tab-line-fade {
	from { opacity: 0; transform: scaleX(0); }
	to { opacity: 1; transform: scaleX(1); }
}

.nav-center-action { flex: 1; display: flex; justify-content: center; position: relative; height: 64px; }
.action-plus-btn {
	width: 50px; height: 50px; border-radius: 50%; background-color: var(--emerald); color: #ffffff; font-size: 22px; display: flex; align-items: center; justify-content: center; position: absolute; top: -25px; box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4); cursor: pointer; transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); animation: center-pulse 2s infinite ease-in-out;
}
.action-plus-btn:active { transform: scale(0.9) translateY(2px); }

@keyframes center-pulse {
	0% { box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4); }
	50% { box-shadow: 0 4px 20px rgba(16, 185, 129, 0.7), 0 0 0 6px rgba(16, 185, 129, 0.15); }
	100% { box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4); }
}

.animate-pulse { animation: heart-beat 1.5s infinite ease-in-out; }
@keyframes heart-beat {
	0%, 100% { transform: scale(1); }
	50% { transform: scale(1.15); }
}

/* ==========================================================================
   SKELETON ANIMATION COMPONENTS
   ==========================================================================
*/
#skeleton-screen {
	position: absolute;
	top: 0; left: 0; right: 0; bottom: 0;
	background-color: var(--bg-app);
	z-index: 999;
	padding: 16px;
	transition: opacity 0.5s ease;
	height: calc(100% - 68px); 
}
.skeleton-body { display: flex; flex-direction: column; gap: 16px; }		

.sk-w-20, .sk-w-24, .sk-w-28, .sk-circle-btn, .sk-widget-box, .sk-box, .sk-item, .sk-toggle, .card-saldo-sk, .sk-text-btn {
	background: linear-gradient(90deg, var(--border-color) 25%, var(--bg-app) 50%, var(--border-color) 75%);
	background-size: 200% 100%;
	animation: loading-shimmer 1.5s infinite linear;
	border-radius: var(--radius-sm);
}		

.sk-w-20 { width: 81px; margin-top: 3px; margin-left: 5px;}
.sk-w-24 { width: 100px; border-radius: 999px; margin-right: 5px; }
.sk-w-28 { width: 120px; }
.h-2 { height: 8px; }
.h-3 { height: 11px; }
.h-4 { height: 15px; }
.h-5 { height: 17px; }
.h-7 { height: 26.5px; }	

.sk-filter-group { display: flex; flex-direction: column; gap: 10px; margin-top: 9px; }
.sk-flex-between { display: flex; justify-content: space-between; }
.sk-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.sk-box { height: 65px; border-radius: var(--radius-sm); margin-left: 5px; margin-right: 12px; width: 97%;}
.sk-section { display: flex; flex-direction: column; gap: 10px; }
.sk-item { height: 58px; border-radius: var(--radius-sm); }

@keyframes loading-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

.hide-content { opacity: 0; transform: translateY(10px); }

.main-header-sk { display: flex; justify-content: space-between; align-items: center; margin: 0px 5px 5px 5px; }
.user-profile-section-sk { display: flex; gap: 12px; align-items: center; }		
.avatar-wrapper-sk { width: 46px; height: 46px; border-radius: 50%; background-color: var(--border-color); }
.user-info-sk { display: flex; flex-direction: column; gap: 6px; }
.sk-toggle { width: 54px; height: 28px; border-radius: 9999px; margin-top: 2px; }
.card-saldo-sk { height: 155px; border-radius: var(--radius-md); margin: 0px 5px; }
.feature-buttons-row-sk { display: flex; justify-content: space-between; gap: 6px; margin: 7px 5px; }		
.sk-btn-item { display: flex; flex-direction: column; align-items: center; gap: 6px; flex: 1; }
.sk-circle-btn { width: 50px; height: 50px; border-radius: 50%; margin: 0 auto; }
.sk-text-btn { width: 50px; height: 11px; border-radius: 99px; margin-top: 5px; }
.sk-widget-box { height: 180px; margin: 0px 5px; }