diff --git a/NucleicRemote/NucleicRemote/Views/Theme.swift b/NucleicRemote/NucleicRemote/Views/Theme.swift index 346a34f..e15ebcc 100644 --- a/NucleicRemote/NucleicRemote/Views/Theme.swift +++ b/NucleicRemote/NucleicRemote/Views/Theme.swift @@ -13,10 +13,10 @@ enum Palette { static let paused = Color(red: 0.62, green: 0.49, blue: 0.93) // purple static let danger = Color(red: 0.92, green: 0.34, blue: 0.34) // red static let neutral = Color.secondary - /// The orchestra (orchestration mode) signature purple — mirrors the Mac's + /// The orchestra (orchestration mode) signature gold — mirrors the Mac's /// `AppTheme.orchestra`. Used for the effort picker's Orchestra option and the - /// composer's purple ring. - static let orchestra = Color(red: 0.55, green: 0.28, blue: 0.95) + /// composer's golden ring. + static let orchestra = Color(red: 0.90, green: 0.66, blue: 0.16) /// Dot/accent color for a session's status, refined by the last turn's disposition — a /// finished-the-work turn reads as "done" (success) rather than the calm "ready" accent. @@ -178,8 +178,9 @@ struct EffortMenu: View { } } -/// A gentle purple ring that breathes around a composer while orchestra is selected — the -/// remote echo of the Mac's `OrchestraGlow`. Honors Reduce Motion (holds steady). +/// A bright golden ring that throbs around a composer while orchestra is selected — the +/// remote echo of the Mac's `OrchestraGlow`, tuned to the same fast, high-amplitude pulse. +/// Honors Reduce Motion (holds steady). struct OrchestraGlowModifier: ViewModifier { var active: Bool var cornerRadius: CGFloat @@ -192,13 +193,15 @@ struct OrchestraGlowModifier: ViewModifier { .overlay { if active { RoundedRectangle(cornerRadius: cornerRadius, style: .continuous) - .strokeBorder(Palette.orchestra.opacity(animating ? 0.9 : 0.5), - lineWidth: animating ? 1.6 : 1.2) - .shadow(color: Palette.orchestra.opacity(animating ? 0.5 : 0.2), - radius: animating ? 8 : 3) + .strokeBorder(Palette.orchestra.opacity(animating ? 0.95 : 0.5), + lineWidth: animating ? 2.2 : 1.3) + .shadow(color: Palette.orchestra.opacity(animating ? 0.7 : 0.22), + radius: animating ? 13 : 4) + .shadow(color: Palette.orchestra.opacity(animating ? 0.4 : 0.06), + radius: animating ? 20 : 4) .animation( reduceMotion ? .default - : .easeInOut(duration: 1.8).repeatForever(autoreverses: true), + : .easeInOut(duration: 0.9).repeatForever(autoreverses: true), value: pulsing) .allowsHitTesting(false) }