#import "FloatingClockStarterProfiles.h"

// v4 iter-55: every starter profile now covers every profileManagedKey.
// Prior profiles omitted ~12 v4 keys (ShowFlags, ShowUTCReference,
// ShowSkyState, Density, LayoutMode, SegmentGap, CornerStyle,
// ShadowStyle, ProgressBarStyle, ActiveFontSize, NextFontSize,
// DateFormat). activateProfile only writes keys it finds, so switching
// to "Default" used to leave the missing keys at the user's current
// value — not a real factory reset. Fully specified here so each
// profile has a coherent identity.
NSDictionary *buildStarterProfiles(void) {
    return @{
        @"Default": @{
            @"DisplayMode": @"three-segment",
            @"LocalTheme": @"terminal",
            @"ActiveTheme": @"green_phosphor",
            @"NextTheme": @"soft_glass",
            @"ColorTheme": @"terminal",
            @"FontSize": @24.0,
            @"ActiveFontSize": @12.0,  // iter-253: 14→12 (user pref)
            @"NextFontSize": @12.0,    // iter-253: 14→12 (user pref)
            @"FontWeight": @"medium",
            @"ActiveWeight": @"medium",
            @"NextWeight": @"medium",
            @"ShowSeconds": @YES,
            @"ShowDate": @YES,
            @"DateFormat": @"short",
            @"TimeFormat": @"24h",
            @"CanvasOpacity": @0.75,
            @"ActiveBarCells": @40,
            @"NextItemCount": @3,
            @"ProgressBarStyle": @"dots",
            @"LayoutMode": @"stacked-local-top",
            @"SegmentGap": @"normal",
            @"CornerStyle": @"rounded",
            @"ShadowStyle": @"none",
            @"Density": @"default",
            @"ShowFlags": @YES,
            @"ShowUTCReference": @YES,
            @"ShowSkyState": @YES,
            @"ShowProgressPercent": @NO,
            @"SelectedMarket": @"local",
        },
        @"Day Trader": @{
            @"DisplayMode": @"three-segment",
            @"LocalTheme": @"amber_crt",
            @"ActiveTheme": @"amber_crt",
            @"NextTheme": @"amber_crt",
            @"ColorTheme": @"amber_crt",
            @"FontSize": @32.0,
            @"ActiveFontSize": @14.0,
            @"NextFontSize": @14.0,
            @"FontWeight": @"bold",
            @"ActiveWeight": @"bold",
            @"NextWeight": @"bold",
            @"ShowSeconds": @YES,
            @"ShowDate": @NO,
            @"DateFormat": @"short",
            @"TimeFormat": @"24h",
            @"CanvasOpacity": @1.00,
            @"ActiveBarCells": @12,
            @"NextItemCount": @5,
            @"ProgressBarStyle": @"blocks",
            @"LayoutMode": @"stacked-local-top",
            @"SegmentGap": @"tight",
            @"CornerStyle": @"sharp",
            @"ShadowStyle": @"none",
            @"Density": @"compact",
            @"ShowFlags": @YES,
            @"ShowUTCReference": @YES,
            @"ShowSkyState": @NO,
            @"ShowProgressPercent": @NO,
            @"SelectedMarket": @"nyse",
        },
        @"Night Owl": @{
            @"DisplayMode": @"local-only",
            @"LocalTheme": @"soft_glass",
            @"ActiveTheme": @"soft_glass",
            @"NextTheme": @"soft_glass",
            @"ColorTheme": @"soft_glass",
            @"FontSize": @16.0,
            @"ActiveFontSize": @11.0,
            @"NextFontSize": @11.0,
            @"FontWeight": @"regular",
            @"ActiveWeight": @"regular",
            @"NextWeight": @"regular",
            @"ShowSeconds": @YES,
            @"ShowDate": @NO,
            @"DateFormat": @"short",
            @"TimeFormat": @"24h",
            @"CanvasOpacity": @0.50,
            @"ActiveBarCells": @40,
            @"NextItemCount": @3,
            @"ProgressBarStyle": @"dots",
            @"LayoutMode": @"stacked-local-top",
            @"SegmentGap": @"airy",
            @"CornerStyle": @"rounded",
            @"ShadowStyle": @"subtle",
            @"Density": @"comfortable",
            @"ShowFlags": @NO,
            @"ShowUTCReference": @NO,
            @"ShowSkyState": @YES,
            @"ShowProgressPercent": @NO,
            @"SelectedMarket": @"local",
        },
        @"Minimalist": @{
            @"DisplayMode": @"local-only",
            @"LocalTheme": @"high_contrast",
            @"ActiveTheme": @"high_contrast",
            @"NextTheme": @"high_contrast",
            @"ColorTheme": @"high_contrast",
            @"FontSize": @20.0,
            @"ActiveFontSize": @11.0,
            @"NextFontSize": @11.0,
            @"FontWeight": @"regular",
            @"ActiveWeight": @"regular",
            @"NextWeight": @"regular",
            @"ShowSeconds": @NO,
            @"ShowDate": @NO,
            @"DateFormat": @"short",
            @"TimeFormat": @"24h",
            @"CanvasOpacity": @1.00,
            @"ActiveBarCells": @40,
            @"NextItemCount": @3,
            @"ProgressBarStyle": @"dots",
            @"LayoutMode": @"stacked-local-top",
            @"SegmentGap": @"normal",
            @"CornerStyle": @"rounded",
            @"ShadowStyle": @"none",
            @"Density": @"default",
            @"ShowFlags": @NO,
            @"ShowUTCReference": @NO,
            @"ShowSkyState": @NO,
            @"ShowProgressPercent": @NO,
            @"SelectedMarket": @"local",
        },
        @"Researcher": @{
            // Clinical / academic aesthetic. ISO-8601 date, 24h, high
            // contrast, no flags or sun/moon. UTC reference visible.
            // Single-market not useful here — stays three-segment for
            // cross-region awareness during paper-writing.
            @"DisplayMode": @"three-segment",
            @"LocalTheme": @"high_contrast",
            @"ActiveTheme": @"high_contrast",
            @"NextTheme": @"high_contrast",
            @"ColorTheme": @"high_contrast",
            @"FontSize": @20.0,
            @"ActiveFontSize": @11.0,
            @"NextFontSize": @11.0,
            @"FontWeight": @"medium",
            @"ActiveWeight": @"medium",
            @"NextWeight": @"medium",
            @"ShowSeconds": @YES,
            @"ShowDate": @YES,
            @"DateFormat": @"iso",
            @"TimeFormat": @"24h",
            @"CanvasOpacity": @1.00,
            @"ActiveBarCells": @40,
            @"NextItemCount": @3,
            @"ProgressBarStyle": @"dots",
            @"LayoutMode": @"stacked-local-top",
            @"SegmentGap": @"normal",
            @"CornerStyle": @"rounded",
            @"ShadowStyle": @"none",
            @"Density": @"default",
            @"ShowFlags": @NO,
            @"ShowUTCReference": @YES,
            @"ShowSkyState": @NO,
            @"ShowProgressPercent": @YES,
            @"SelectedMarket": @"local",
        },
        @"Watch Party": @{
            @"DisplayMode": @"single-market",
            @"LocalTheme": @"dracula",
            @"ActiveTheme": @"dracula",
            @"NextTheme": @"dracula",
            @"ColorTheme": @"dracula",
            @"FontSize": @48.0,
            @"ActiveFontSize": @16.0,
            @"NextFontSize": @16.0,
            @"FontWeight": @"heavy",
            @"ActiveWeight": @"heavy",
            @"NextWeight": @"heavy",
            @"ShowSeconds": @YES,
            @"ShowDate": @YES,
            @"DateFormat": @"short",
            @"TimeFormat": @"24h",
            @"CanvasOpacity": @0.90,
            @"ActiveBarCells": @40,
            @"NextItemCount": @3,
            @"ProgressBarStyle": @"dots",
            @"LayoutMode": @"stacked-local-top",
            @"SegmentGap": @"airy",
            @"CornerStyle": @"rounded",
            @"ShadowStyle": @"glow",
            @"Density": @"spacious",
            @"ShowFlags": @YES,
            @"ShowUTCReference": @YES,
            @"ShowSkyState": @YES,
            @"ShowProgressPercent": @NO,
            @"SelectedMarket": @"nyse",
        },
        @"Auction Watcher": @{
            // v4 iter-140: showcases the iter-123/125/126 auction-window
            // cluster. Three-segment so NEXT shows PRE-MARKET ◐ and
            // AFTER-HOURS ◒ glyphs. Volcanic theme (iter-132) matches
            // the high-intensity feel of auction windows. Extended 30-min
            // SessionSignalWindow for a longer pre-open warm-up. Black
            // weight (iter-129) for punchy, decisive typography. Crisp
            // shadow + hairline corners for precision readout.
            @"DisplayMode": @"three-segment",
            @"LocalTheme": @"espresso",
            @"ActiveTheme": @"volcanic",
            @"NextTheme": @"volcanic",
            @"ColorTheme": @"volcanic",
            @"FontSize": @28.0,
            @"ActiveFontSize": @13.0,
            @"NextFontSize": @13.0,
            @"FontWeight": @"black",
            @"ActiveWeight": @"black",
            @"NextWeight": @"bold",
            @"ShowSeconds": @YES,
            @"ShowDate": @YES,
            @"DateFormat": @"short",
            @"TimeFormat": @"24h",
            @"CanvasOpacity": @0.90,
            @"ActiveBarCells": @40,
            @"NextItemCount": @5,
            @"ProgressBarStyle": @"triangles",
            @"LayoutMode": @"stacked-local-top",
            @"SegmentGap": @"snug",
            @"CornerStyle": @"hairline",
            @"ShadowStyle": @"crisp",
            @"Density": @"compact",
            @"ShowFlags": @YES,
            @"ShowUTCReference": @YES,
            @"ShowSkyState": @NO,
            @"ShowProgressPercent": @YES,
            @"SelectedMarket": @"local",
            // v4 iter-148: explicit 30-min auction window. Matches the
            // profile comment; without this line the key falls back to
            // the registered default "15min" and the "Extended" label
            // in the comment would be false advertising.
            @"SessionSignalWindow": @"30min",
        },
        @"Arctic": @{
            // v4 iter-198: showcases iter-195 Aurora theme + iter-196
            // Borealis Quick Style. Cool-palette starter for night-owl
            // traders who want a luminous readout — thin weight + halo
            // shadow + wide letter-spacing evokes auroral light over
            // arctic dark. Three-segment, 15-min auction window (the
            // default middle-ground, not the Auction Watcher's 30-min
            // wider lens — Arctic is aesthetically focused, not
            // operationally extended). Local shows sky-glyph because
            // night-owl context matters.
            @"DisplayMode": @"three-segment",
            @"LocalTheme": @"aurora",
            @"ActiveTheme": @"aurora",
            @"NextTheme": @"aurora",
            @"ColorTheme": @"aurora",
            @"FontSize": @24.0,
            @"ActiveFontSize": @11.0,
            @"NextFontSize": @11.0,
            @"FontWeight": @"thin",
            @"ActiveWeight": @"regular",
            @"NextWeight": @"thin",
            @"ShowSeconds": @YES,
            @"ShowDate": @YES,
            @"DateFormat": @"short",
            @"TimeFormat": @"24h",
            @"TimeSeparator": @"middot",
            @"LetterSpacing": @"wide",
            @"LineSpacing": @"loose",
            @"CanvasOpacity": @0.55,
            @"ActiveBarCells": @40,
            @"NextItemCount": @3,
            @"ProgressBarStyle": @"waves",  // iter-197 glyph
            @"LayoutMode": @"stacked-local-top",
            @"SegmentGap": @"airy",
            @"CornerStyle": @"squircle",
            @"ShadowStyle": @"halo",
            @"Density": @"comfortable",
            @"ShowFlags": @YES,
            @"ShowUTCReference": @YES,
            @"ShowSkyState": @YES,  // night-owl context matters
            @"ShowProgressPercent": @NO,
            @"SelectedMarket": @"local",
            @"SessionSignalWindow": @"15min",
        },
    };
}

NSArray<NSString *> *profileManagedKeys(void) {
    return @[
        @"DisplayMode", @"LocalTheme", @"ActiveTheme", @"NextTheme", @"ColorTheme",
        @"FontName", @"FontSize", @"ShowSeconds", @"ShowDate", @"TimeFormat",
        @"DateFormat", @"CanvasOpacity", @"ProgressBarStyle", @"LayoutMode", @"SegmentGap", @"CornerStyle", @"ShadowStyle",
        @"ActiveBarCells", @"NextItemCount", @"SelectedMarket",
        @"ActiveFontSize", @"NextFontSize", @"ShowFlags", @"Density",
        @"ShowUTCReference", @"ShowSkyState", @"ShowProgressPercent",
        @"FontWeight", @"ActiveWeight", @"NextWeight",
        @"LocalOpacity", @"ActiveOpacity", @"NextOpacity",
        @"LetterSpacing", @"LineSpacing", @"TimeSeparator",
        @"SessionSignalWindow",
        @"UrgencyHorizon",
        @"UrgencyFlash",
        @"ShowWeekProgress",          // iter-247: was missing since iter-229
        @"ShowMoonPhase",              // iter-247: was missing since iter-243
        @"WeekProgressCellsPerDay",    // iter-247: was missing since iter-230
    ];
}
