diff --git a/assets/icons/lucide/book-open.svg b/assets/icons/lucide/book-open.svg
new file mode 100644
index 0000000..27e4bf3
--- /dev/null
+++ b/assets/icons/lucide/book-open.svg
@@ -0,0 +1,14 @@
+
diff --git a/assets/icons/lucide/book-open.svg.import b/assets/icons/lucide/book-open.svg.import
new file mode 100644
index 0000000..c374e89
--- /dev/null
+++ b/assets/icons/lucide/book-open.svg.import
@@ -0,0 +1,43 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bgv42gr8xm8rf"
+path="res://.godot/imported/book-open.svg-683be4c8f98553ef842aedfa9c35759c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/icons/lucide/book-open.svg"
+dest_files=["res://.godot/imported/book-open.svg-683be4c8f98553ef842aedfa9c35759c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/assets/icons/lucide/star.svg b/assets/icons/lucide/star.svg
new file mode 100644
index 0000000..31388b6
--- /dev/null
+++ b/assets/icons/lucide/star.svg
@@ -0,0 +1,13 @@
+
diff --git a/assets/icons/lucide/star.svg.import b/assets/icons/lucide/star.svg.import
new file mode 100644
index 0000000..44dae9d
--- /dev/null
+++ b/assets/icons/lucide/star.svg.import
@@ -0,0 +1,43 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dty3x2w0mjrv3"
+path="res://.godot/imported/star.svg-5cf15f039032ad2da3c91090b75025e6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/icons/lucide/star.svg"
+dest_files=["res://.godot/imported/star.svg-5cf15f039032ad2da3c91090b75025e6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/scripts/ui/dashboard_screen.gd b/scripts/ui/dashboard_screen.gd
index cbbd81a..d862cc6 100644
--- a/scripts/ui/dashboard_screen.gd
+++ b/scripts/ui/dashboard_screen.gd
@@ -82,7 +82,7 @@ func _build() -> void:
qbank_sparkline = DashboardSparkline.new()
qbank_sparkline.custom_minimum_size = Vector2(0, 34)
- _add_stat_card("qbank", "Question Bank Rating", "chart-no-axes-column-increasing", Brand.ROYAL_BLUE, qbank_sparkline)
+ _add_stat_card("qbank", "Question Bank Rating", "book-open", Brand.ROYAL_BLUE, qbank_sparkline)
ccs_sparkline = DashboardSparkline.new()
ccs_sparkline.custom_minimum_size = Vector2(0, 34)
@@ -90,7 +90,7 @@ func _build() -> void:
readiness_segment_bar = DashboardSegmentBar.new()
readiness_segment_bar.custom_minimum_size = Vector2(0, 10)
- _add_stat_card("readiness", "Exam Readiness", "activity", Brand.PURPLE, readiness_segment_bar)
+ _add_stat_card("readiness", "Exam Readiness", "chart-no-axes-column-increasing", Brand.PURPLE, readiness_segment_bar)
accuracy_progress_bar = ProgressBar.new()
accuracy_progress_bar.show_percentage = false
@@ -98,7 +98,7 @@ func _build() -> void:
accuracy_progress_bar.max_value = 100.0
accuracy_progress_bar.custom_minimum_size = Vector2(0, 10)
_style_progress(accuracy_progress_bar, Brand.AMBER)
- _add_stat_card("accuracy", "Average Score", "circle-check", Brand.AMBER, accuracy_progress_bar)
+ _add_stat_card("accuracy", "Average Score", "star", Brand.AMBER, accuracy_progress_bar)
analytics_grid = GridContainer.new()
analytics_grid.columns = 2
@@ -415,6 +415,27 @@ func _render_recent(items: Array) -> void:
recent_list.add_child(row)
+func _info_badge(dark: bool) -> Control:
+ var badge := PanelContainer.new()
+ badge.custom_minimum_size = Vector2(15, 15)
+ badge.size_flags_vertical = Control.SIZE_SHRINK_BEGIN
+ var box := StyleBoxFlat.new()
+ box.bg_color = Color.TRANSPARENT
+ box.border_color = Brand.muted_color(dark)
+ box.set_border_width_all(1)
+ box.set_corner_radius_all(8)
+ box.content_margin_left = 0
+ box.content_margin_right = 0
+ box.content_margin_top = 0
+ box.content_margin_bottom = 0
+ badge.add_theme_stylebox_override("panel", box)
+ var glyph := _label("i", 10, Brand.muted_color(dark), true)
+ glyph.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
+ glyph.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
+ badge.add_child(glyph)
+ return badge
+
+
func _add_stat_card(key: String, title: String, icon_name: String, accent: Color, bottom_visual: Control) -> void:
var dark := UIThemeService.is_dark_mode()
var card_content := VBoxContainer.new()
@@ -440,9 +461,7 @@ func _add_stat_card(key: String, title: String, icon_name: String, accent: Color
title_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
title_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
header.add_child(title_label)
- var info_label := _label("ⓘ", 13, Brand.muted_color(dark))
- info_label.size_flags_vertical = Control.SIZE_SHRINK_BEGIN
- header.add_child(info_label)
+ header.add_child(_info_badge(dark))
var value := _label("--", 28, Brand.text_color(dark), true)
card_content.add_child(value)
diff --git a/scripts/ui/dashboard_segment_bar.gd.uid b/scripts/ui/dashboard_segment_bar.gd.uid
new file mode 100644
index 0000000..31970e5
--- /dev/null
+++ b/scripts/ui/dashboard_segment_bar.gd.uid
@@ -0,0 +1 @@
+uid://duq4hsl7b72g2
diff --git a/scripts/ui/dashboard_sparkline.gd.uid b/scripts/ui/dashboard_sparkline.gd.uid
new file mode 100644
index 0000000..51472ab
--- /dev/null
+++ b/scripts/ui/dashboard_sparkline.gd.uid
@@ -0,0 +1 @@
+uid://4rtqkgrljvw5
diff --git a/web/medmind_shell.html b/web/medmind_shell.html
index 345dbfe..27b7a9e 100644
--- a/web/medmind_shell.html
+++ b/web/medmind_shell.html
@@ -211,6 +211,7 @@
letter-spacing: 0;
line-height: 1.3;
margin: 17px 0 clamp(36px, 6vh, 54px);
+ text-align: center;
width: 100%;
}