@@ -630,31 +630,44 @@ const Analysis: React.FC<Props> = ({
630630 < div className = "flex h-full w-[90%] flex-row gap-2" >
631631 < motion . div
632632 id = "navigation"
633- className = "desktop-left-column-container flex flex-col gap-2 overflow-hidden"
633+ className = "desktop-left-column-container flex flex-col overflow-hidden"
634634 variants = { itemVariants }
635635 style = { { willChange : 'transform, opacity' } }
636636 >
637- < GameInfo title = "Analysis" icon = "bar_chart" type = "analysis" >
638- < NestedGameInfo />
639- </ GameInfo >
640- < div className = "flex max-h-[25vh] min-h-[25vh] flex-col bg-backdrop/30" >
641- < AnalysisGameList
642- currentId = { currentId }
643- loadNewWorldChampionshipGame = { ( newId , setCurrentMove ) =>
644- getAndSetTournamentGame ( newId , setCurrentMove )
645- }
646- loadNewLichessGame = { ( id , pgn , setCurrentMove ) =>
647- getAndSetLichessGame ( id , pgn , setCurrentMove )
648- }
649- loadNewMaiaGame = { ( id , type , setCurrentMove ) =>
650- getAndSetUserGame ( id , type , setCurrentMove )
651- }
652- onCustomAnalysis = { ( ) => setShowCustomModal ( true ) }
653- refreshTrigger = { refreshTrigger }
654- />
655- </ div >
656- < div className = "flex h-1/2 w-full flex-1 flex-col gap-2" >
657- < div className = "flex h-full flex-col overflow-y-scroll" >
637+ < div className = "border-glassBorder bg-glass flex h-full w-full flex-col overflow-hidden rounded-md border backdrop-blur-md" >
638+ { /* Game info header */ }
639+ < GameInfo
640+ title = "Analysis"
641+ icon = "bar_chart"
642+ type = "analysis"
643+ embedded
644+ >
645+ < NestedGameInfo />
646+ </ GameInfo >
647+ { /* Game list */ }
648+ < div className = "flex flex-col overflow-hidden" >
649+ < div className = "h-4" />
650+ < div className = "max-h-[32vh] min-h-[32vh]" >
651+ < AnalysisGameList
652+ currentId = { currentId }
653+ loadNewWorldChampionshipGame = { ( newId , setCurrentMove ) =>
654+ getAndSetTournamentGame ( newId , setCurrentMove )
655+ }
656+ loadNewLichessGame = { ( id , pgn , setCurrentMove ) =>
657+ getAndSetLichessGame ( id , pgn , setCurrentMove )
658+ }
659+ loadNewMaiaGame = { ( id , type , setCurrentMove ) =>
660+ getAndSetUserGame ( id , type , setCurrentMove )
661+ }
662+ onCustomAnalysis = { ( ) => setShowCustomModal ( true ) }
663+ refreshTrigger = { refreshTrigger }
664+ embedded
665+ />
666+ </ div >
667+ </ div >
668+ { /* Moves + controller */ }
669+ < div className = "red-scrollbar flex h-full flex-1 flex-col overflow-y-auto" >
670+ < div className = "h-4" />
658671 < MovesContainer
659672 game = { analyzedGame }
660673 termination = { analyzedGame . termination }
@@ -666,7 +679,10 @@ const Analysis: React.FC<Props> = ({
666679 disableMoveClicking = {
667680 controller . learnFromMistakes . state . isActive
668681 }
682+ embedded
683+ heightClass = "h-40"
669684 />
685+ { /* No spacer here to keep controller tight to moves */ }
670686 < BoardController
671687 gameTree = { controller . gameTree }
672688 orientation = { controller . orientation }
@@ -682,6 +698,7 @@ const Analysis: React.FC<Props> = ({
682698 controller . learnFromMistakes . state . isActive
683699 }
684700 disableNavigation = { controller . learnFromMistakes . state . isActive }
701+ embedded
685702 />
686703 </ div >
687704 </ div >
@@ -1265,13 +1282,13 @@ const Analysis: React.FC<Props> = ({
12651282 />
12661283 </ Head >
12671284 { /* Radial gradient backdrop to match new design language */ }
1268- < div
1285+ { /* <div
12691286 className="pointer-events-none absolute inset-0"
12701287 style={{
12711288 background:
12721289 'radial-gradient(ellipse 75% 60% at center top, rgba(239, 68, 68, 0.08) 0%, transparent 60%)',
12731290 }}
1274- />
1291+ /> */ }
12751292 < AnimatePresence >
12761293 { controller . maia . status === 'no-cache' ||
12771294 controller . maia . status === 'downloading' ? (
0 commit comments